现在的位置: 首页 > 综合 > 正文

OpenGL ES纹理管理

2013年10月29日 ⁄ 综合 ⁄ 共 6001字 ⁄ 字号 评论关闭

 在OpenGL中,这里要用到很多的纹理图,但是一般我们用的都只是一些小小的控件,所以图形一般都不是很大,一般的做法就是为每一个这样的

下图都去建立一个纹理,但是这个是很没有效率的。因为opengl对于纹理的处理是先把它放在硬件上面,处理完了然后把下一个纹理放上来,这样

如果问你过多就会产生很多没有必要的纹理替换的操作,所以很有必要把很多小图贴在一个大图形上面,这样我们只用管理一张大图就OK了,一般我们的纹理图的大小是有限制的,在G1上面,好像这个限制是1024*1024.所以很多很小的图标我们都可以放在一张大图上面。

 

在3D纹理贴图中,这里有一个这样的概念Texture Atlas,

纹理组合

在游戏或者可视化应用中,我们总是会遇到许多非常小的纹理,一种比较好的办法是我们把这些纹理组合成一个比较大的纹理,例
如256x256,这样驱动程序在加载纹理的video
memory的地址时候,驱动程序仅仅需要加载一次家可以了。这种方法在多个造型软件中也经常见到,例如人体造型软件Pose,它将一个人的头发,脸,眼
睛,等组合为一个纹理。

建议

: 将多个小纹理组合为一个大纹理,然后修改对应三角形定点的纹理坐标,或者使用glMatrixMode(GL_TEXTURE)对定点的纹理坐标作几何变换。

 

这里有一个效率不是很高的算法,来做这个事情:

 

 

 

然后就是我们纹理合并的一个类

抱歉!评论已关闭.