Android - open gl es 1.1 - 绘图效率

时间:2014-09-02 15:55:22

标签: android opengl-es

获取包含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(...)只需要调用一次......?

或许两种技术之间没有显着差异?

1 个答案:

答案 0 :(得分:1)

据我所知,一旦纹理通过texImage2D加载,绑定纹理只是将原生OpenGL库指向正确的预加载纹理,因此性能方面,它不应该是昂贵的。

但是,无论性能问题如何,您都应该考虑一个很好的选择。

通常情况下,您需要的纹理 具有二维功能,但由于OpenGL的要求,无论如何都要设置为该尺寸。这通常会导致非常浪费的内存分配。利用"精灵表"如你所说它可以帮助节省时间和将多个位图加载到纹理中的记忆,这些纹理通常比你要渲染的部分要大。

出于这个原因,我建议使用精灵表,只是因为它节省了对texImage2D的调用(这是非常昂贵的),并且可能也节省了内存。如果在要渲染的对象之间切换时正确管理纹理坐标,这就是我建议的方法。