如何解决在TWGL中,为什么“ setBuffersAndAttributes”和“ drawBufferInfo”是两个单独的调用?
在TWGL中,为什么必须先将缓冲区信息传递给setBuffersAndAttributes,然后再将其传递给drawBufferInfo?我是WebGL的新手,只是尝试了解管道,为什么要进行这两个单独的调用,在这种情况下,我将首先设置缓冲区信息,然后在绘制之前进行其他操作,或者根本不绘制它,或者绘制另一个缓冲信息?
解决方法
为什么要用这两个单独的调用,在这种情况下,我会先设置缓冲区信息,然后再做其他操作,然后再绘制或根本不绘制它或绘制不同的缓冲区信息?
最常见的原因是要绘制许多相同的东西。
twgl.setBuffersAndAttributes(gl,someProgramInfo,someBufferInfo);
// uniforms shared by all instances like projection or view
twgl.setUniforms(...);
for each instance
// uniforms unique this instance like material,texture or world matrix
twgl.setUniforms(...);
twgl.drawBufferInfo(...);
twgl.drawBufferInfo唯一要做的就是调用gl.drawArrays
或gl.drawElements
,而要做的唯一信息就是
- 绘制数量以及要处理的顶点数量
- 是否对数据建立索引(换句话说,应该调用gl.drawArrays还是gl.drawElements
- 如果是索引,则
UNSIGNED_BYTE
,UNSIGNED_SHORT
或UNSIGNED_INT
是什么类型的索引
这是唯一的目的,因此,如果您将数据从非索引更改为索引,则不必将代码从gl.drawArrays
更改为gl.drawElements
或反之亦然
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。