我正在尝试使用 WebGL 创建游戏。
我目前有三种纹理,一种是字体字母,一种是角色精灵表,另一种是世界地图。所以我有一些大纹理,我需要多次绘制其中的一小部分。
做这个的最好方式是什么?
我目前的方法是为每个字母、地图上的正方形、角色姿势等使用一个 VAO……所以我会有 150 多个 VAO。我认为 VAO 很好,因为它们既简单又快速,但是this、this和其他让人觉得这不是最好的选择。
例如,我知道的另一种方法是只有三个 VAO,并更改 WebGL 在缓冲区中开始读取的位置以获得正确字母的位置。因此,我不会使用数百个带有微型阵列的 VAO,而是使用三个带有大型阵列的 VAO。如果这是正确的方法,我是否必须在每次绘制内容时都在 gl.enablevertexAttribArray() 之后调用 gl.vertexAttribPointer() ,还是只修改 gl.drawArrays() 中的计数参数?
gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS ) 是 16 或 32,所以切碎纹理似乎也不是一个好方法。
最好的概念方法是什么?