Cocos2dx的ZOrder见解
来源:互联网 发布:2017淘宝卖什么成本低 编辑:程序博客网 时间:2024/06/04 18:30
ZOrder分localZOrder和gobalZOrder,gobalZOrder优先级比localZOrder高,gobalZOrder影响DrawElements的提交顺序,localZOrder提交到renderer的顺序
int _localZOrder; ///< Local order (relative to its siblings) used to sort the node float _globalZOrder; ///< Global order used to sort the node
Node:visit()内部实现
children: <0 self:draw >0
先绘制localZOrder<0的子节点
然后绘制自己
最后绘制localZOrder>0子节点
来一段CCNode的visit函数源代码:
void Node::visit(Renderer* renderer, const Mat4 &parentTransform, uint32_t parentFlags){ // quick return if not visible. children won't be drawn. if (!_visible) { return; } uint32_t flags = processParentFlags(parentTransform, parentFlags); // IMPORTANT: // To ease the migration to v3.0, we still support the Mat4 stack, // but it is deprecated and your code should not rely on it _director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); _director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, _modelViewTransform); bool visibleByCamera = isVisitableByVisitingCamera(); int i = 0; if(!_children.empty()) { sortAllChildren(); // draw children zOrder < 0 for( ; i < _children.size(); i++ ) { auto node = _children.at(i); if (node && node->_localZOrder < 0) node->visit(renderer, _modelViewTransform, flags); else break; } // self draw if (visibleByCamera) this->draw(renderer, _modelViewTransform, flags); for(auto it=_children.cbegin()+i; it != _children.cend(); ++it) (*it)->visit(renderer, _modelViewTransform, flags); } else if (visibleByCamera) { this->draw(renderer, _modelViewTransform, flags); } _director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); // FIX ME: Why need to set _orderOfArrival to 0?? // Please refer to https://github.com/cocos2d/cocos2d-x/pull/6920 // reset for next frame // _orderOfArrival = 0;}
0 0
- Cocos2dx的ZOrder见解
- cocos2dx tag和zorder
- cocos2dx的Render Command的肤浅见解
- ZOrder的使用
- ZOrder的使用
- ZOrder的使用
- ZOrder
- 动态设置CCNode的zOrder
- cocos2d 中 zorder 和 setVertexZ 的区别
- CCSpriteBatchNode中设置zOrder的问题
- MFC控件的绘制与响应顺序——ZOrder
- 易错点--关于CCNode中的Zorder和VertexZ属性的区别
- cocos2d-x中Zorder和VertexZ属性的区别
- MFC控件的绘制与响应顺序——ZOrder
- MFC控件的绘制与响应顺序——ZOrder
- MFC控件的绘制与响应顺序——ZOrder
- ZOrder方法
- J2ME的个人见解
- 用NSUserDefaults保存和读取程序设置
- 前端面试知识点及答案
- android自定义控件系列
- linux关于执行文件路径的变量$PATH
- 【BZOJ2654】tree【二分】【最小生成树】
- Cocos2dx的ZOrder见解
- 【计算机网络 第五版】阅读笔记之五:运输层
- 【牛腩新闻发布系统】IIS发布过程中遇到的一些问题
- 常用数学符号的 LaTeX 表示方法
- 【Android】快捷自定义Dialog对话框并获取属性
- JavaScript中对象的 constructor 属性的介绍
- mysql:linux下mysql默认安装、目录更改、常用命令
- 设计模式—适配器模式
- C++第七次实验-素数和回文