相机的OpenGL问题(?)

时间:2016-04-25 15:47:50

标签: c++ opengl glut

我正在学习OpenGL,我的程序存在问题,我应该制作太阳能系统。

首先,这是我用来设置ModelView Matrix的代码:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(20, 1, 0, 0);
glTranslatef(0, -20, -60);

然后我使用线环绘制轨道,太阳是一个gluSphere:

glPushMatrix();
glColor3f(1, 0.4f, 0);
glTranslatef(0, -2, 0);
gluSphere(gluNewQuadric(), 4, 30, 30);
glPopMatrix();

这是结果:

SolarSystem1

但是,当我使用此代码“放大”时:

if (key=='w')
{
    glTranslatef(0, 1, 2.4);
}
else if (key=='s')
{
    glTranslatef(0, -1, -2.4);
}

这种情况发生了:

enter image description here

线条留在球体前方。我知道这可能是我正在做的事情,但我刚开始学习,这真的让我感到沮丧.. 谢谢!

1 个答案:

答案 0 :(得分:5)

您可能没有打开深度测试。

glEnable(GL_DEPTH_TEST);

您可能还需要调整深度测试参数,但通常默认设置就足够了。

glDepthfunc(GL_LESS);

我还想花时间强烈建议您停止使用OpenGL的立即模式和OpenGL的固定功能管道,learn Modern OpenGL