cocos2d-x学习笔记-SpriteBatchNode的优化原理
2014-06-25 10:54
447 查看
要相对cocos2d-x有一个全面的理解,学习opengl是必须的事情,当然了,对我们这些做上层游戏的,对opengl有一个大概的,比较清楚地理解就可以了!
今天,我把我对SpriteBatchNode的理解说出来,如果感觉那里不对,希望指点!
我们都知道SpriteBatchNode是用于批处理,可以提高渲染效果!但是为什么可以?有什么限制?
1. 我们先回答第一个问题: 为什么可以?
cocos2dx中的绘画,是通过Node节点的visit方法开始,
一般的节点,会调用自己的draw方法,然后依次调用子节点的draw方法,我这里先不考虑绘画的顺序!而在每一个节点的draw方法中!我们可以通过观察Sprite的draw方法,可以发现,每一次的draw的调用,就会使得opengl重新绑定纹理,指定各种顶点坐标,纹理坐标,颜色等等,最后进行绘画,当然了这里的数据只是该Sprite的数据。
对于SpriteBatchNode,通过观察它的addChild方法以及draw方法,就会发现,其实现快速渲染的本质,其实就是,把所有的孩子节点(包括孩子节点的孩子),所有的数据都放在一起,再draw中,进行一起绘画!即一次渲染!从而达到快速渲染的目的!
2. 第二个问题:有什么限制?
首先,从opengl角度来说,切换纹理是很耗时的动作! 其实,从SpriteBatchNode实现来说,必须要求同一张纹理,即必须是同一张图片!甚至要求他的孩子节点的孩子节点也必须是一张纹理!
其实,再从SpriteBatchNode角度发现,它要求他的孩子必须是Sprite!
上面是我对SpriteBatchNode的理解!希望各位大神发现不对的地方,给我指出来!谢谢啊!
今天,我把我对SpriteBatchNode的理解说出来,如果感觉那里不对,希望指点!
我们都知道SpriteBatchNode是用于批处理,可以提高渲染效果!但是为什么可以?有什么限制?
1. 我们先回答第一个问题: 为什么可以?
cocos2dx中的绘画,是通过Node节点的visit方法开始,
一般的节点,会调用自己的draw方法,然后依次调用子节点的draw方法,我这里先不考虑绘画的顺序!而在每一个节点的draw方法中!我们可以通过观察Sprite的draw方法,可以发现,每一次的draw的调用,就会使得opengl重新绑定纹理,指定各种顶点坐标,纹理坐标,颜色等等,最后进行绘画,当然了这里的数据只是该Sprite的数据。
对于SpriteBatchNode,通过观察它的addChild方法以及draw方法,就会发现,其实现快速渲染的本质,其实就是,把所有的孩子节点(包括孩子节点的孩子),所有的数据都放在一起,再draw中,进行一起绘画!即一次渲染!从而达到快速渲染的目的!
2. 第二个问题:有什么限制?
首先,从opengl角度来说,切换纹理是很耗时的动作! 其实,从SpriteBatchNode实现来说,必须要求同一张纹理,即必须是同一张图片!甚至要求他的孩子节点的孩子节点也必须是一张纹理!
其实,再从SpriteBatchNode角度发现,它要求他的孩子必须是Sprite!
上面是我对SpriteBatchNode的理解!希望各位大神发现不对的地方,给我指出来!谢谢啊!
相关文章推荐
- 我的Cocos2d-x学习笔记(八)利用CCSpriteBatchNode进行优化
- 我的Cocos2d-x学习笔记(八)利用CCSpriteBatchNode进行优化
- cocos2d-x学习笔记:SpriteBatchNode
- Cocos2d-X 学习笔记 20 利用CCSpriteBatchNode提高渲染效率
- SpriteBatchNode优化原理
- cocos2d-x的Sptrite Action SpriteFrame Animation texture使用的简单方法---学习笔记
- 【Cocos2d-html5游戏引擎学习笔记(5)】Sprite精灵渲染
- cocos2d-x学习笔记-纹理优化
- cocos2d-X 节点(SpriteBatchNode.h.)API
- cocos2d-x 3.1.1 学习笔记[19] ClippingNode 可以镂空别的精灵
- cocos2d学习笔记(六)CCParallaxNode和Tile Map
- [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化
- cocos2d-x 学习笔记之CCNode
- [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化
- cocos2d-x 3.1.1 学习笔记[18] Sprite创建之旅
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【爱上cocos2d-x之八】使用CCSpriteBatchNode优化绘制一批相同的精灵
- cocos2d-x学习笔记(2)--向游戏中添加角色(sprite)
- [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化
- cocos2d-x学习笔记(16)--spritesheet(精灵表单)