我对 OpenGL 非常陌生,所以请多多包涵。:) 我正在学习 NeHe 的 OpenGL 教程,并且我开发了我自己的第 5 课版本,您可以在其中围绕原点旋转 3D 形状。我不确定我做错了什么,我几乎逐行复制了代码,但我看到我的表面上有奇怪的重叠。
有没有人对什么会导致这样的问题有任何建议?
对我来说,您似乎缺少启用深度缓冲区或者可能使用 z 缓冲区创建帧缓冲区。(这与 Troubadour 所写的类似)
glEnable(GL_DEPTH_TEST);
看起来你的深度缓冲区有问题。特别是看起来每个多边形都是在不考虑深度的情况下绘制的,即来自多边形的每个片段都通过了深度测试。这意味着多边形只是按照它们恰好被渲染的顺序相互绘制。
您是否使用类似的方法禁用写入深度缓冲区
glDepthMask( GL_FALSE )
在任何情况下?
如果不是这样,那么您是否记得在每帧开始时清除深度缓冲区?Nehe教程开始于
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
这会清除深度和颜色缓冲区。确保你没有摆脱那GL_DEPTH_BUFFER_BIT
部分。
高温高压
哇,用一行完全修复它:
gl.glEnable(GL.GL_CULL_FACE);
我不知道它做了什么,但在我使用的任何教程中都没有提到它,但我的演示现在完美运行。去谷歌看看那做了什么。:D