获取包含glSurfaceView
的应用程序,该应用程序在开始时加载几个单独的图像(GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
为每个图像)。
然后,此应用程序必须先调用gl.glBindTexture(GL10.GL_TEXTURE_2D, texture pointer int)
,然后才能继续为" texturable square" gl object。
建议改为使用所有纹理加载一个位图(即:精灵表),然后创建一个"可纹理方块"每个映射巨型单个图像的不同区域,就像gl.glBindTexture(...)
只需要调用一次......?
或许两种技术之间没有显着差异?
答案 0 :(得分:1)
据我所知,一旦纹理通过texImage2D加载,绑定纹理只是将原生OpenGL库指向正确的预加载纹理,因此性能方面,它不应该是昂贵的。
但是,无论性能问题如何,您都应该考虑一个很好的选择。
通常情况下,您需要的纹理 具有二维功能,但由于OpenGL的要求,无论如何都要设置为该尺寸。这通常会导致非常浪费的内存分配。利用"精灵表"如你所说它可以帮助节省时间和将多个位图加载到纹理中的记忆,这些纹理通常比你要渲染的部分要大。
出于这个原因,我建议使用精灵表,只是因为它节省了对texImage2D的调用(这是非常昂贵的),并且可能也节省了内存。如果在要渲染的对象之间切换时正确管理纹理坐标,这就是我建议的方法。