因此,我绘制'I'并使用gluLookAt(0.f,0.f,3.f,0.f,0.f,0.f,0。 f,1.f,0.f),而我的尺寸适中。然后我添加一个drawScene()函数,用渐变颜色绘制背景,然后'I'变得超大。我想这是因为我在drawScene()中将矩阵模式更改为GL_PROJECTION和GL_MODELVIEW,并且这些更改了透视图吗?我猜glPushMatrix()和glPopMatrix()需要保留矩阵状态,但我很难找到把它们放在哪里。那么我怎样才能让'我'看起来正常?这里是我的drawI()和drawScene():OpenGL改变背景而不改变先前绘制的图片的视角
void drawI(int format)
{
glBegin(format);
glColor3f(0, 0, 1);
glVertex2f(point[3][0], point[3][1]);
glVertex2f(point[2][0], point[2][1]);
glVertex2f(point[1][0], point[1][1]);
glVertex2f(point[12][0], point[12][1]);
glVertex2f(point[10][0], point[10][1]);
glEnd();
glBegin(format);
glVertex2f(point[10][0], point[10][1]);
glVertex2f(point[11][0], point[11][1]);
glVertex2f(point[12][0], point[12][1]);
glEnd();
glBegin(format);
glVertex2f(point[9][0], point[9][1]);
glVertex2f(point[10][0], point[10][1]);
glVertex2f(point[3][0], point[3][1]);
glVertex2f(point[4][0], point[4][1]);
glVertex2f(point[6][0], point[6][1]);
glColor3f(1, 0.5, 0);
glVertex2f(point[7][0], point[7][1]);
glVertex2f(point[8][0], point[8][1]);
glEnd();
glBegin(format);
glColor3f(0, 0, 1);
glVertex2f(point[5][0], point[5][1]);
glVertex2f(point[6][0], point[6][1]);
glVertex2f(point[4][0], point[4][1]);
glEnd();
}
void drawScene()
{
glBegin(GL_QUADS);
//red color
glColor3f(1.0,0.0,0.0);
glVertex2f(-1.0,-1.0);
glVertex2f(1.0,-1.0);
//blue color
glColor3f(0.0,0.0,1.0);
glVertex2f(1.0, 1.0);
glVertex2f(-1.0, 1.0);
glEnd();
}
非常感谢!
因此,我将glMatrixMode()和glLoadIdentity()从drawScene()和drawI()中提取出来放到display()中。我改变drawScene函数()和drawI()以上的,这里是我的显示器()
void display()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70.f,1.f,0.001f,30.f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawScene();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.f,0.f,3.f,0.f,0.f,0.f,0.f,1.f,0.f);
drawI(GL_TRIANGLE_FAN);
glutSwapBuffers();
}
你没有调用'drawI',你永远不会创建一个投影矩阵以外的身份? – Tommy 2015-02-06 05:17:48
我在另一个名为display()的函数中调用了drawScene(),然后调用了drawI()。是的,我没有创建投影矩阵,这是为什么?对不起,这个问题可能是愚蠢的新的OpenGL – user3799934 2015-02-06 05:39:50
我认为我们仍然需要看到调用这两个函数的代码,看看你如何以及在哪里调用gluLookAt。 – jwlaughton 2015-02-06 06:11:11