美文网首页
07-渲染流程-1-流程

07-渲染流程-1-流程

作者: fengsharp | 来源:发表于2016-07-07 19:28 被阅读0次
    cocos2dx渲染序列图

    1.AppControler完成加载后

    2.调用了Director,设置了OpenglView,投影的设置就在这个过程里面。

    3.调用Application::run

    4.在开始运行程序之前,首先调用了基础了Application的Appdelegate的applicationDidFinishLaunching方法

    5.new一个新的Scene,并runScene,此时Director中存在了一个需要渲染的树

    6.然后开启一个无休止的循环mainLoop

    7.在Director::mainLoop中,需要完成两件事情

    1.drawScene 渲染整个场景树

    2.PoolManager中clear引用计数的autoRelease

    之后游戏的就全部放在了mainloop中进行处理,所以比较复杂的所有的逻辑都在drawScene中体现.

    问题:

    1.AppControler是如何执行的?

    2.AppController 和 RootViewController 分析

    AppController 是针对UIApplicationDelegate的处理,也就是系统加载完成后需要执行的 finish  enterBackground enterForeground 等

    而 RootViewController 则是针对UIViewController,主要针对的是视图相关的,最重要的是横版和竖版的时候,修改屏幕的大小(长宽)。

    3.app controllerdidFinishLaunchingWithOptions

    create window

    create CCEAGLView

    create RootViewController 来管理CCEAGLView

    隐藏了IOS的状态条

    接着进入了cocos2dx

    首先 create cocos2d::GLView -> 通过CCEAGLView来创建

    Director:: setOpenGLView

    cocos2d::Application -> run

    4.drawScene

    最终调用了 Node::visit

    voidNode::visit(Renderer* renderer,constMat4&parentTransform,boolparentTransformUpdated)

    在visit内部,主要逻辑是递归访问child,处理每一个child的render

    f have no child    就是叶子节点

    draw self

    else

    对child按照zorder排序

    首先绘制 zorder < 0的

    然后绘制自己

    然后绘制 zorder > 0的

    而针对每一个节点,真正的渲染,会自动进入到

    virtualvoiddraw(Renderer*renderer,constMat4& transform,booltransformUpdated);

    完整渲染流程图

    相关文章

      网友评论

          本文标题:07-渲染流程-1-流程

          本文链接:https://www.haomeiwen.com/subject/qhuljttx.html