仅当我在 glEnd 之后调用 glPopMatrix 时才会显示立方体(而不是相反)
Cube only displays if I call glPopMatrix after glEnd (not the other way around)
我在 OpenGl 中遇到了一个非常奇怪的问题。以下代码按预期生成黄色立方体
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glPopMatrix();
glEnd();
然而,当我将 glpopMatrix() 放在 glEnd() 之后时,我只得到一个没有立方体的黑屏。
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glEnd();
glPopMatrix();
对我来说,第二种方法更有意义(推、开始、结束然后弹出),我真的不知道为什么它不起作用。感谢任何帮助,谢谢!
问题不在于 glPopMatrix()
调用的位置。问题出在 glBegin()
和 glEnd()
上。删除它们,glutSolidCube()
已经这样做了。
如果您使用的是 FreeGLUT,那么 glutSolidCube()
甚至不会使用 glBegin()
和 glEnd()
,而是会在后台使用顶点数组。所以简而言之,您可能只是混淆了您的驱动程序,这就是您得到奇怪结果的原因。
我在 OpenGl 中遇到了一个非常奇怪的问题。以下代码按预期生成黄色立方体
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glPopMatrix();
glEnd();
然而,当我将 glpopMatrix() 放在 glEnd() 之后时,我只得到一个没有立方体的黑屏。
glPushMatrix();
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (GLfloat[]){ 1, 1, 0, 1 });
glBegin(GL_LINE_LOOP);
glutSolidCube(1);
glEnd();
glPopMatrix();
对我来说,第二种方法更有意义(推、开始、结束然后弹出),我真的不知道为什么它不起作用。感谢任何帮助,谢谢!
问题不在于 glPopMatrix()
调用的位置。问题出在 glBegin()
和 glEnd()
上。删除它们,glutSolidCube()
已经这样做了。
如果您使用的是 FreeGLUT,那么 glutSolidCube()
甚至不会使用 glBegin()
和 glEnd()
,而是会在后台使用顶点数组。所以简而言之,您可能只是混淆了您的驱动程序,这就是您得到奇怪结果的原因。