如何在OpenGL(ES)中正确渲染重合多边形

Jay*_*esh 9 opengl-es depth-buffer webgl

我知道通过在OpenGL ES中设置深度函数,可以控制在3D场景中渲染重叠几何的方式.我gl.depthFunc(gl.LEQUAL)在我的代码中使用(webgl).

然而,当两组多边形重合并且具有不同颜色时,所得到的表面变成两种颜色的任意混合图案(随着相机位置改变而改变,因此导致闪烁).看看这张图片:

在此输入图像描述

我怎样才能解决这个问题?我尝试了不同的depthFunc值,但没有一个能解决这个问题.我希望巧合的多边形有单一的颜色,哪一个没关系.

Riv*_*ver 11

这称为z-fighting,与两个在相同深度渲染的对象相关,但是舍入误差(和深度缓冲精度)偶尔会在另一个前面弹出一个.您可以使用的一个解决方案是使用glPolygonOffset函数:

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPolygonOffset.xml

您可以在本页底部看到它的使用示例:

http://www.glprogramming.com/red/chapter06.html