我正在尝试创建和显示3D正方形,但是由于某种原因,当我渲染它时,它的一部分丢失了:
void DrawCube::drawCubes(int amount){
glBegin(GL_POLYGON);
glVertex3f( 1.0, -1.0, 1);
glVertex3f( 1.0, -1.0, -1);
glVertex3f( 1.0, 1.0, -1);
glVertex3f( 1.0, 1.0, 1);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, -1);
glVertex3f( 1.0, -1.0, -1);
glVertex3f( 1.0, 1.0, -1);
glVertex3f(-1.0, 1.0, -1);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(-1.0, -1.0, 1);
glVertex3f( 1.0, -1.0, 1);
glVertex3f( 1.0, 1.0, 1);
glVertex3f(-1.0, 1.0, 1);
glEnd();
glBegin(GL_POLYGON);
glVertex3f( -1.0, -1.0, 1);
glVertex3f( -1.0, -1.0, -1);
glVertex3f( -1.0, 1.0, -1);
glVertex3f( -1.0, 1.0, 1);
glEnd();
}
}
我不是在寻找只给我代码的答案,而是在解释造成这种感谢的原因。
最佳答案
立方体似乎被投影的远平面夹住了。通过 glOrtho
设置投影矩阵时,增加到远平面的距离。
请注意,投影矩阵定义了 View 体积(请参见3D projection)。裁剪了超出查看体积的所有几何图形。
关于c++ - QT OpenGL无法完全渲染立方体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59361926/