当 CallList 中的对象与近平面相交时,我会闪烁...,我该怎么办?
我使用 OpenGL 和 SDL。
是的,它是双缓冲的。
这听起来像你得到z-fighting。
“Z-fighting 是 3D 渲染中的一种现象,当两个或多个图元在 z 缓冲区中具有相似值时会发生这种现象,并且在共面多边形中尤其普遍。这种效果会导致伪随机像素以一个多边形的颜色进行渲染“ (来自维基百科)
您可以在OpenGL 常见问题解答中获得有关该问题的更多信息。
glPolygonOffset 可能会有所帮助,但您也可能会遇到麻烦。Tom Forsyth 在他的常见问题解答中有一个很好的解释:它谈到了 ZBIAS,但这只是 DirectX 的等价物。
问题是我的旋转函数有一些浮点错误,这搞砸了我的 model_view 矩阵。
你们谁也猜不到,抱歉浪费了你们的时间。
虽然我不认为移动近平面甚至应该被视为解决任何类型问题的方法,但通常还有其他问题,因为openGL确实支持多边形与近平面相交。
尝试将近剪裁平面放得更远一点:例如使用 gluPerspective -> 第三个参数zNear http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/perspective.html
啊,你的意思是近平面。:)
嗯......在同一平面上绘制多边形时的另一件事是使用glPolygonOffset
从描述
glPolygonOffset is useful for rendering hidden-line images,
for applying decals to surfaces, and for rendering solids
with highlighted edges.