webgl奇怪的渲染工件

时间:2015-08-11 09:01:10

标签: webgl

更新 我已在网上发布代码以证明问题: http://cutama.github.io/

要查看问题,请将鼠标放在红色矩形上,然后使用鼠标滚轮放大和缩小。过了一会儿,你会看到三角形闪烁,然后用鼠标左键旋转。

控件:

鼠标左键单击并拖动:轨道,鼠标中键和拖动:平移,鼠标滚动:缩放

END UPDATE

我遇到了一个与webgl有关的奇怪渲染问题。每当我移动相机时,一些三角形似乎随机丢失。见下图。 我一直在挖掘,但找不到原因。可能导致这种情况的任何想法?

这是几何体的正常渲染: enter image description here

缺少三角形: enter image description here

另一个缺少的三角形: enter image description here

使用webgl检查器进行了一些调试。

GL追踪: enter image description here

点击丢失的像素显示它已被深度剔除,但前面没有任何东西......所以为什么要剔除? enter image description here

与正常无遮挡像素的比较: enter image description here

缓冲区内的顶点数据。三角形非常小。这会导致问题吗? enter image description here

2 个答案:

答案 0 :(得分:1)

我不知道是什么造成了这个错误。但是,我将列出您可能需要考虑的内容。

  • 检查指定的PrimitiveTopology是否正确(在很多情况下应该是gl.TRIANGLES)

  • 检查你是否渲染了gl.DrawElements或gl.DrawArrays。 如果使用索引缓冲区,则应使用gl.DrawElements

  • 检查您是否使用了正确的剔除配置。

  • 检查您是否使用了正确的深度比较功能。(如果您没有使用深度测试,则无需关心)

答案 1 :(得分:0)

发现问题是由模型中的错误三角形索引引起的。但是不确定它为什么会导致闪烁。