您的位置:首页 > 移动开发 > Cocos引擎

探cocos2dx纹理模块(textures),源码版本(2.2.3)

2014-08-17 21:28 274 查看
模块相关类(模块名textures):

CCTexture2D:

在cocos2dx里边所有的2d纹理都由这个类来表示。它提供了多种方式来构建一个cocos2dx的纹理对象,比如说通过多种格式的图像文件,甚至是buffer,创建方式调用了CCImage类对象。除了创建方式,还有设置纹理过滤参数的接口。

在opengl中,设置纹理过滤函数参数的意义在于从纹理空间映射到帧缓冲图像空间时所需要做的操作中,因为在映射的过程中有可能会造成图像的失真,比如说一个实际上只有32*32的纹理映射到64*64的帧缓冲矩形上时会产生锯齿(或者是高几何精度物体观察角度造成的失真)。这时候可以设置opengl的纹理过滤函数让最终展现在屏幕上的图形有较好的效果。

CCTextureAtlas:

在opengl低版本中,每一次渲染的时候总是需要向opengl传入顶点信息,法向量信息,颜色等等。这样就造成的性能上的浪费,后来就开发VBO技术,其实它主要功能还是在gpu里边构建一个buffer,里边保存有各种之前提到的渲染信息,这样每一次渲染的时候都不需要传入很多渲染信息了,从而提高了渲染性能,CCTextureAtlas就封装了这种渲染技术。因为opengl es有纹理2指数宽高的需求,atlas也提高了内存性能。

CCTextureCache:

CCTexture2D容器类,提供多种方式创建CCTexture2D,代码里边调用CCTexture2D的创建接口。这个类也实现了cocos2dx纹理的内存管理,没有用到的纹理将会被释放,如果还存在引用则不会释放。具体参考:cocos2dx内存管理

CCTextureETC:

提供加载安卓平台硬件加速特有的格式的方法,这个类不负责渲染,只负责提供opengl es的纹理id,图像宽高等信息,这个类对象在CCTexture2D里边创建ETC格式的纹理被用到。

CCTexturePvr:

这个类同上,不过是ios平台硬件加速格式。另外PVR有一个预先计算alpha通道的标志m_bHasPremultipliedAlpha,预先计算是用于从RGBA转RGB时用到的。

uml图:



使用方式:

略。

扩展:

如果需要支持另外一种格式图片的话,需要在CCImage里边添加一个方法就可以了,类似于:CCImage::_initWithJpgData。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐