为什么我们在openGL中默认查看负z?

时间:2016-03-16 01:52:52

标签: opengl

我有这段代码

glColor3f(1, 0, 0);// red quad
glBegin(GL_QUADS);
glVertex3f(-1, 0, -0.1); 
glVertex3f(1, 0, -0.1);
glVertex3f(1, 1, -0.1);
glVertex3f(-1, 1, -0.1);
glEnd();

glColor3f(0, 1, 0); //green quad
glBegin(GL_QUADS);
glVertex3f(-1, 0, -0.2);
glVertex3f(1, 0, -0.2);
glVertex3f(1, 1, -0.2);
glVertex3f(-1, 1, -0.2);
glEnd();

glutSwapBuffers();

使用默认投影矩阵,出现的是我的绿色四边形。
如果我们要查看负z(从1到-1),那么红色四边形后面的绿色四边形应该不是吗?

2 个答案:

答案 0 :(得分:1)

兼容模式下的所有矩阵OpenGL以身份矩阵开始;他们不会应用任何转换。

在标准化设备坐标系中,+ Z进入窗口;你正在看+ Z.当然,矩阵和着色器可以改变这种情况。

还要确保启用了深度测试,并使用深度缓冲区创建窗口。

答案 1 :(得分:0)

如果红色四边形位于视锥体的近和远平面之外,则红色四边形将不会被显示,因为它会被剪掉。 More information