cocos2dx的Render Command的肤浅见解
来源:互联网 发布:project tango 淘宝 编辑:程序博客网 时间:2024/05/16 06:30
渲染过程:
Render Command种类:
- BatchComand 批处理渲染: SpriteBatchNode, 精灵表SpriteFrameCache
- CustomCommand 自定义,自己扩充,函数调用: execute()
- GroupComand 未知,不明,跟RenderQueue有关
- MeshComand 3D的建模,网格
- PrimitiveComand 貌似是渲染图元的Render Command
- QuadComand 纹理绘制
绘制sprite调用Draw()时候是先生成QuadComand提交到Renderer,由Renderer统一绘制,不同Node使用不同的RenderCommand
关于Sprite:
Sprite已经实现自动批处理,
每次render时,比较这次getMaterialID和上材料ID(MaterialID)不同才调用DrawElements,
纹理MaterialID由物质材料,灯光,着色器,纹理ID和Blend模式(混合模式)一起决定
QuadCommand的materialID的生成int glProgram = (int)_glProgramState->getGLProgram()->getProgram();int intArray[4] = { glProgram, (int)_textureID, (int)_blendType.src, (int)_blendType.dst};_materialID = XXH32((const void*)intArray, sizeof(intArray), 0);
_materialID是一个uint32_t类型的值
void Sprite:draw(Renderer *renderer, constMat4& transform, uint32_t flags){ _quadCommand.init(_globalZOrder, _texture->getName(),getGLProgramState(), _blendFunc, &_quad, 1, transform) renderer->addCommand(&_quadCommand); ….}@param renderer: 渲染的总控制
@param transform : 移动,旋转,缩放等顶点变换矩阵,MV矩阵
@flags : 是否更新ContentSize或者transform??
0 0
- cocos2dx的Render Command的肤浅见解
- Cocos2dx的ZOrder见解
- 一些肤浅的东西
- NHibernate的肤浅认识
- Service的肤浅了解
- c++重写的肤浅理解
- 厌恶肤浅喋喋不休的人
- RSA加密算法的肤浅理解
- 肤浅的模仿是虚假
- 对C++的一点肤浅的认知
- socket编程的一个肤浅的认识
- 关于ElasticSearch的一些肤浅的思考
- 第九篇--Linkify的肤浅研究
- 对象的肤浅认识和工厂模式
- React.render和reactDom.render的区别
- React.render和reactDom.render的区别
- React.render和reactDom.render的区别
- app.render和res.render的区别
- win7 自带刻文件到光驱
- 【计算机网络 第五版】阅读笔记之一:概述
- Qt 获取CPU信息
- linux 常用命令
- 使用Linux命令行测试网速
- cocos2dx的Render Command的肤浅见解
- cvHaarDetectObjects
- Glide使用
- ListView中getChildAt(index)的使用注意事项
- thinkphp发送邮件 图文教程
- Xcode插件管理工具Alcatraz
- #1启动Cubism Modeler 作准备
- error C2533: “A::{ctor}”: 构造函数不能有返回类型
- 查看工程里有多少行java代码(好装逼)