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

render many textures with vbo using 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);
}

不知道有没有更方便的方法。 谢谢

你有多种可能性:

  • 使用图集,一个大纹理,其中包含所有小纹理,例如 this。您当然可以更新它,即覆盖(部分)它。 优点:一种独特的最终纹理绑定 缺点:必须计算每个子图像的所有纹理坐标

  • 您可以使用几个纹理数组,一个对应不同的大小。然后你将 select 正确的图像与统一变量或顶点属性。 优点:很少有纹理绑定。 缺点:如果必须删除纹理,则必须销毁-重新创建它(您可能希望创建具有硬编码长度的纹理数组)

  • 你只是继续做你已经在做的事。 亲:最简单的方法。我强烈建议你这样开始。配置文件,找出这是否是瓶颈,如果是,则进行改进。 缺点:根据您的情况可能效率低下

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