gpt4 book ai didi

c++ - glColor 实际上并没有改变 OpenGL 的颜色

转载 作者:太空狗 更新时间:2023-10-29 21:06:04 26 4
gpt4 key购买 nike

我有一个特别烦人的问题。在某些情况下,对 glColor 的调用似乎被忽略,导致对象以不正确的颜色显示。

可以找到显示此问题的 Qt 项目 here .

当您运行该程序时,您在屏幕上看到的只是两个从某个角度看的类似盒子的对象。左边的对象是通过调用 glCallList(boxModel1); 渲染的,右边的对象是通过调用 glCallList(boxModel2); 渲染的。这两个显示列表是通过明显标题的方法创建的。

对于 boxModel1boxModel2,我使用一个名为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com