SpriteBatchNode优化原理
来源:互联网 发布:致远oa软件 编辑:程序博客网 时间:2024/06/03 20:38
要相对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优化原理
- cocos2d-x学习笔记-SpriteBatchNode的优化原理
- SpriteBatchNode
- Cocos2d-js_____Sprite 和 SpriteBatchNode
- Cocos2d-x SpriteBatchNode
- cocos2d-x SpriteBatchNode
- cocos2dx cc.SpriteBatchNode运用
- Cocos2d-x3.1SpriteBatchNode使用
- -SpriteBatchNode与SpriteFrameCache加快渲染
- cocos2d-x学习笔记:SpriteBatchNode
- SpriteBatchNode与SpriteFrameCache加快渲染
- cocos2d理解--SpriteBatchNode和TextureAtlas
- Cocos2d-x-3.10 SpriteBatchNode渲染
- SpriteBatchNode与SpriteFrameCache加快渲染
- 【android 优化】listview优化原理
- cocos2d-X 节点(SpriteBatchNode.h.)API
- Cocos2d-x V3.0 Sprite 和 SpriteBatchNode
- Oracle的优化原理
- 算法设计与应用基础:第十四周(1)
- C#枚举、类、多态、接口
- session
- memcached安装流程
- hadoop2.7.2学习笔记19-ViewFs
- SpriteBatchNode优化原理
- mybatis级联-resultMap
- Project Student: Webservice Server with Jersey(节选:Jersey REST Server)
- 快速在本地搭建https项目
- rabbitmq基本原理
- ClamAv开源杀毒引擎详解
- SLAM方法汇总
- JAVA操作HBASE数据操作详解
- ctfmon.exe windows输入法无法启动