使用 WebGL2 绘制实例 - vertexAttribDivisor

Drawing instances with WebGL2 - vertexAttribDivisor

我现在正在向 https://webgl2fundamentals.org. I'm learning about instancing 学习 webgl2。我可以让演示工作,它画了很多十字,我可以让它与 500 个实例一起工作。

但我无法向场景中添加任何其他内容。我有一个简单的三角形,它在没有实例化的情况下渲染得很好,但是添加了十字后三角形就消失了。我相信这与 gl.vertexAttribDivisor 有关。我不确定什么时候需要调用它,或者我是否需要以某种方式撤消它。

如果我省略对 vertexAttribDivisor 的调用,则十字不会正确呈现,但三角形很好。如果我替换对 vertexAttribDivisor 的调用,三角形就会消失。

我什么时候打电话给gl.vertexAttribDivisor?我是否必须撤消调用以恢复正常的非实例化渲染?它到底有什么作用?

顶点属性函数更改单个全局状态。 vertexAttribDivisor 为指定的 generic 顶点属性(全局可用的属性之一)设置除数,对于每个要使用 draw* 设置属性的调用11=] 和 vertexAttribDivisor,如果您更改了一个绘制调用的属性的除数,但不想为您的后续绘制调用使用相同的除数,则需要重置它。