OpenGl和闪烁

时间:2020-03-05 18:51:04  来源:igfitidea点击:

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

我正在使用OpenGL和SDL。

是的,它是双缓冲的。

解决方案

回答

尝试将附近的裁剪平面放得更远:
例如,使用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.

回答

听起来我们像在打Z战。

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

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

glPolygonOffset可能会有所帮助,但是我们也可能会遇到麻烦。汤姆·福赛斯(Tom Forsyth)在他的常见问题解答(FAQ)中有一个很好的解释:谈到ZBIAS,但这只是DirectX的等效内容。

回答

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

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

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