我在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()
,而是使用引擎盖下的顶点数组。所以简单地说,你可能只是混淆了你的司机,这就是为什么你得到了奇怪的结果。
关于c - 仅当我在glEnd之后调用glPopMatrix时才显示多维数据集(反之亦然),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43012362/