07-渲染流程-4-Sprite渲染-渲染命令分析
来源:互联网 发布:京东联盟网站源码 编辑:程序博客网 时间:2024/06/05 09:49
如果在可视范围内,则需要执行render的addCommand命令
首先我们需要搞清楚两个对象 _quadCommand 和 renderer
QuadCommand
Sprite使用的QuadCommand进行渲染,所以要了解Sprite是如何被渲染出来的,就要深入看QuadCommand的代码了。
Renderer
renderer->addCommand(&_quadCommand);
addCommand发生了什么呢?
在Renderer内部有一个
std::vector<RenderQueue> _renderGroups;
addCommand 其实就是在栈顶的RenderQueue添加RenderCommand
我们再来看看RenderQueue
维护了RenderCommand,在我们这个Demo中,只需要关注 _queue0 即可
渲染的时机
我们再来看看 Director::mainLoop 吧,如果合适,就会做两件事情
1.drawScene
2.内存池释放
所以渲染的关键地方在于 drawScene
显然,渲染的时机现在我们可以粗略的分为两部分:
1.遍历Node树,收集渲染命令,渲染命令保存在了_renderer对象的当前栈顶的 RendQueue中
Node树的根节点永远是当前Scene对象
2.执行 _renderer->render()
进行排序后,然后就具体渲染,基本可以分为两步:
1.遍历保存的RenderCommand
2.flush 执行批次渲染命令
在HelloWorld中:
1.遍历保存的RenderCommand,找到了渲染的QuadCommand命令,并保存在了
std::vector<QuadCommand*> _batchedQuadCommands;
2.flush
调用了 void Renderer::drawBatchedQuads()
然后从QuadCommand中获取渲染的数据,调用对应的OpenGL接口进行绘制。
所以接下来我们需要重点分析一下
QuadCommand 和 对应的 渲染接口
- 07-渲染流程-4-Sprite渲染-渲染命令分析
- 07-渲染流程-3-Sprite渲染-判断是否裁剪分析
- 07-渲染流程-5-Sprite渲染-QuadCommand
- 07-渲染流程-2-HelloWorld分析
- 渲染流程
- 渲染流程
- 渲染流程
- 渲染流程
- 渲染流程
- 渲染
- 渲染
- 渲染
- 渲染
- 用Starling渲染Sprite
- cocos2d-x渲染流程分析
- 07-渲染流程-1-流程
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- [Web前端]梳理-JavaScript.5.函数,6.作用域
- servlet解决浏览器的跨域
- [Rman]Rman增量备份level012的区别
- 不要走上技术分析之路
- 425 Unable to build data connection: Connection refused
- 07-渲染流程-4-Sprite渲染-渲染命令分析
- ShareSDK快速集成
- Java进阶(十八)Java实现定时器(Timer)
- http几种请求方式调用
- Check out this cheat sheet for technical interviews
- JavaWeb三大组件之Listener
- 数学基础IV——根据坐标系旋转建立欧拉微分方程解算姿态
- [ecshop 资料] ecshop 安装须知 - 支付插件的问题 。。ectouch 小京东
- 欧拉这个函数