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

标签 c++ qt opengl

我有一个特别烦人的问题。在某些情况下,对 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/

相关文章:

c++ - 如何从无法直接访问的地方将消息/事件推送到消息队列中?

c++ - 逻辑/关系表达式优化

c++ - Qt 5.1.1调试错误代码-1073741521

linux - 使用 OpenGL/Mesa3D 的可移植 Linux 编译可执行文件

c++ - 在 glVertexAttribPointer 的模板中获取成员偏移量

c++ - 在 glm 和 OpenGL 中合成变换

c++ - 是否有任何适用于 C++ Windows 开发人员的免费可移植(意思是 <100mb)IDE,其编译器能够进行代码提示并经过测试可与 Win32 API 一起使用?

windows - Qt Windows 10 通知

c++ - 从 blender 导入的模型上的渐变颜色

c# - 为什么我的代码没有渲染一个非常简单的矩形?