使用JOGL使用vbo渲染许多纹理

时间:2016-06-11 16:06:42

标签: jogl

我有很多小图像,这些图像可以组合成一个大图像。 现在,我使用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。

1 个答案:

答案 0 :(得分:0)

您有多种可能性:

  • 使用地图集,一个大纹理,里面有所有小纹理,类似于this。您当然可以更新它,即覆盖(部分)它。 Pro:一种独特的最终纹理绑定 缺点:必须计算每个子图像的所有纹理坐标

  • 你可以使用几个纹理数组,每个不同的大小一个。然后,您将使用统一变量或顶点属性选择正确的图像。 Pro:几个纹理绑定。 缺点:如果必须删除纹理,你必须销毁 - 重新创建它(你可能想要创建一个硬编码长度的纹理数组)

  • 你就像你已经做的那样继续做。 亲:最简单的方法。我强烈建议你这样开始。简介,找出这是否是一个瓶颈,如果是,改进。 缺点:根据您的情况可能效率低下

Ps:GL_QUADS已弃用,请使用普通GL_TRIANGLES