我在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/

10-09 22:46