我正在尝试使用 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,因此切碎纹理似乎也不是一个好方法。
最好的概念方法是什么?