【发布时间】:2020-10-19 16:09:10
【问题描述】:
我正在尝试使用 WebGL 创建游戏。
我目前有三个纹理,一个是字体的字母,一个是角色的精灵表,一个是世界的瓦片图。所以我有一些大纹理,我需要多次绘制其中的一小部分。
最好的方法是什么?
我目前的方法是为每个字母、地图上的正方形、角色姿势等使用 VAO……所以我会有 150 多个 VAO。我认为 VAO 很好,因为它们既简单又快速,但 this、this 和其他人认为这不是最佳选择。
我知道的另一种方法是只使用三个 VAO,并更改 WebGL 在缓冲区中开始读取的位置,以获取正确字母的位置。因此,我将拥有三个带有大型阵列的 VAO,而不是数百个带有小阵列的 VAO。如果这是正确的方法,我每次绘制东西时是否必须在 gl.enablevertexAttribArray() 之后调用 gl.vertexAttribPointer() ,还是只修改 gl.drawArrays() 中的 count 参数?
gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS) 是 16 或 32,因此切碎纹理似乎也不是一个好方法。
什么是最好的概念方法?
【问题讨论】:
标签: javascript vertex-buffer webgl2 vertex-array-object