OpenGl和闪烁

OpenGl和闪烁

OpenGl And Flickering

当CallList中的对象与近平面相交时,我会闪烁...,该怎么办?

我使用OpenGL和SDL。

是的,它是双缓冲的。


这听起来像是在吵架。

" Z-fighting是3D渲染中的一种现象,当两个或多个基本体在z缓冲区中具有相似的值时发生,并且在共面多边形中特别普遍。这种效果导致用颜色渲染伪随机像素一个多边形或另一个多边形以不确定性的方式变化,随着场景的动画变化而变化,导致一个多边形先"赢得" z检验,然后再赢得另一个,依此类推。
(摘自维基百科)

您可以在OpenGL FAQ中获得有关该问题的更多信息。

glPolygonOffset可能会有所帮助,但是您也可能会遇到麻烦。汤姆·福赛斯(Tom Forsyth)在其常见问题解答(FAQ)中有一个很好的解释。


问题是我的旋转函数有一些浮点错误,这弄乱了我的model_view矩阵。

没人能猜到,抱歉浪费您的时间。

尽管我不认为移动近平面甚至不应该被视为解决任何类型问题的方法,但是通常其他情况是错误的,因为openGL确实支持与近平面的多边形相交。


尝试将附近的裁剪平面放得更远:
例如,使用gluPerspective->第三个参数zNear
http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/glu/perspective.html


啊,你的意思是近平面。 :)

好吧...在同一平面上绘制多边形时的另一件事是使用glPolygonOffset

根据说明

1
2
3
  glPolygonOffset is useful for rendering hidden-line images,
  for applying decals to surfaces, and for rendering solids
  with highlighted edges.

推荐阅读