WebGL 1仅支持GLSL ES v1.00。实例化的绘图调用受ANGLE_instanced_arrays扩展名。
该扩展非常流行,以至于成为WebGL 2.0 DrawArraysInstance的一部分。WebGL 2.0支持更高版本的GLSL,后者支持内置的gl_InstanceID
和gl_VertexID
。
但是,由于WebGL 1停留在旧的GLSL版本上,因此不支持这些变量。但是可以模拟它们,或者我希望可以!
为了模拟gl_VertexID
,我只是使用[0, 1, 2, 3, 4, 5, ...]
的数组缓冲区,并将其与0
的除数绑定,效果很好。
但是,我不知道如何模拟gl_InstanceID
。
我想我知道了!我可以将另一个属性绑定到[0, 1, 2, 3, 4, 5, ...]
数组缓冲区,除数为1
。
该属性将每个实例增加一次,与gl_InstanceID
相同。