我所理解的Cocos2d-x 全新的绘制系统
新绘制系统的特点
绘制系统概览绘制流程分为三个阶段:
RenderCommandCocos2d-x渲染系统管理下的每一次绘制调用都是一个RenderCommand。
QUAD_COMMANDQuadCommand用于绘制一个或多个矩形区域,每个矩形是一个纹理的一部分,如Sprite、Tiles、ParticleSystemQuad。一个QuadCommand中包含以下4部分内容:
Cocos2d-x 3.0提供了一种叫自动批绘制(Automatic Batching)的技术,即对多个相邻的QuadCommand,如果它们使用了相同的纹理、着色器、混合模式及其他一些OpenGL ES的状态设置,则只会调用一次OpenGL ES绘制命令。这使得应用程序可以不依赖诸如手动将Sprite添加到SpriteBatchNode的方式就能实现批绘制,尤其是多个不同类型的UI元素。 GROUP_COMMANDGoupCommand通常不包含具体的GL绘制命令,它只指向一个新的RenderQueue。 也就是说,默认情况下,所有的RenderCommand都被添加到索引为0的RenderQueu中,我们称其为主绘制栈。如果添加的RenderCommand是GroupCommand类型的话,而且这个GoupCommand会新建一个RenderCommand并且指向它。那么,Render其实持有多个RenderQueue。 RenderQueue场景中的每个UI元素的各种类型的绘制命令RenderCommand将被发送到一个叫做RenderQueue的绘制命令栈上。 RenderCommand排序遍历完UI树并添加到绘制栈后,RenderQueue对所有globalOrder为0的RenderCommand都不执行排序,而是以它们被添加到RenderQueue中的顺序为准,只对少数特殊设置了globalOrder属性的Node进行排序。 元素的可见性自动裁剪自动裁剪:在遍历UI树时进行位置计算,如果发现其位于屏幕之外,则不会发送绘制命令到Render中,但是,目前它仅在Sprite元素上使用。 visible属性当一个元素的属性为false的时候,遍历UI树时将被忽略。但是,不会影响事件的分发,对于触摸事件,就会造成一种非预期的结果:一个元素虽然不可见,但是它能够接收触摸事件。因此在触摸事件中应该判断其可见性。 元素什么时候被绘制对于这种绘制系统的设计,我们不知道其什么时候被返回。
自定义RenderCommand
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- xml – findnodes()中的xpath表达式返回空节点列
- Ajax相同url的请求_IE缓存问…
- swift – 使用模块“CALayer”作为类型
- VB CommonDialog控件选择多个文件,报"实时错
- content_main.xml在Android studio 1.4中的作用是
- Oracle Database 12c中的新进程
- C#导出生成excel文件的方法小结(xml,html方式)
- objective-c – iOS以编程方式从照片库中选择图片
- c# – 自动更新Compact Framework应用程序代码
- iphone – 显示18年前的datepicker并在ios中锁定