我有很多小图像,这些图像可以组合成一个大图像。 现在,我使用VBO来做这个,它是有效的。部分渲染功能如下:
for (int i = 0; i < mListTexData.size(); i++) {
gl.glBindTexture(GL2.GL_TEXTURE_2D, mTexturesIDs.get(i));
gl.glDrawArrays(GL2.GL_QUADS, i*4, 4);
}
我想知道是否有更方便的方法来做到这一点。 THX。
答案 0 :(得分:0)
您有多种可能性:
使用地图集,一个大纹理,里面有所有小纹理,类似于this。您当然可以更新它,即覆盖(部分)它。 Pro:一种独特的最终纹理绑定 缺点:必须计算每个子图像的所有纹理坐标
你可以使用几个纹理数组,每个不同的大小一个。然后,您将使用统一变量或顶点属性选择正确的图像。 Pro:几个纹理绑定。 缺点:如果必须删除纹理,你必须销毁 - 重新创建它(你可能想要创建一个硬编码长度的纹理数组)
你就像你已经做的那样继续做。 亲:最简单的方法。我强烈建议你这样开始。简介,找出这是否是一个瓶颈,如果是,改进。 缺点:根据您的情况可能效率低下
Ps:GL_QUADS
已弃用,请使用普通GL_TRIANGLES