1

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

我使用 OpenGL 和 SDL。

是的,它是双缓冲的。

4

4 回答 4

5

这听起来像你得到z-fighting。

“Z-fighting 是 3D 渲染中的一种现象,当两个或多个图元在 z 缓冲区中具有相似值时会发生这种现象,并且在共面多边形中尤其普遍。这种效果会导致伪随机像素以一个多边形的颜色进行渲染“ (来自维基百科

您可以在OpenGL 常见问题解答中获得有关该问题的更多信息。

glPolygonOffset 可能会有所帮助,但您也可能会遇到麻烦。Tom Forsyth 在他的常见问题解答中有一个很好的解释:它谈到了 ZBIAS,但这只是 DirectX 的等价物。

于 2008-09-10T22:07:24.747 回答
3

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

你们谁也猜不到,抱歉浪费了你们的时间。

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

于 2008-09-13T19:21:42.220 回答
2

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

于 2008-09-10T21:07:30.400 回答
0

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

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

从描述

  glPolygonOffset is useful for rendering hidden-line images,
  for applying decals to surfaces, and for rendering solids
  with highlighted edges.
于 2008-09-10T21:08:56.403 回答