我有一个特别烦人的问题。在某些情况下,对 glColor 的调用似乎被忽略,导致对象以不正确的颜色显示。
可以找到显示此问题的 Qt 项目 here .
当您运行该程序时,您在屏幕上看到的只是两个从某个角度看的类似盒子的对象。左边的对象是通过调用 glCallList(boxModel1);
渲染的,右边的对象是通过调用 glCallList(boxModel2);
渲染的。这两个显示列表是通过明显标题的方法创建的。
对于 boxModel1
和 boxModel2
,我使用一个名为 squareModel
的显示列表来呈现框的侧面。我这样做是因为虽然本例中的正方形模型很简单,但我实际程序中的 squareModel
要复杂得多,法线发生了变化等等。
问题与 createManyRectangles
方法有关。当用足够小的数字(对我来说是 2715)调用时,颜色正常显示:一个蓝色框和一个红色框。当数字很高(对我来说是 2716)时,颜色会被忽略,两个框都呈现为白色。
谁能阐明这里发生的事情?
最佳答案
All rendering is done via display lists, but the problem occurs both when I specify the color in the display list and when I specify the color right before I call the display list.
显示列表不是独立的。它们在更改后不会恢复 OpenGL 状态。如果 DL 更改了 OpenGL 状态,那么这将是 DL 执行之后 OpenGL 的状态。
您只是没有发布足够的代码来明确地表达任何;这只是最可能的解释。在您可以发布可重现的案例之前,没有真正的帮助方法。
关于c++ - glColor 实际上并没有改变 OpenGL 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8315809/