cocos2dx 3.x避免空customCommand
1,导致性能悲剧的写法:
class A:public CCNode{
public:
A(){
m_sprite=NULL;
m_isDrawDebug=false;
}
virtual~A(){}
bool init(){
this->CCNode::init();
//create m_sprite
m_sprite=CCSprite::create();
m_sprite->initWithFile("a.png");
addChild(m_sprite);
....
return true;
}
void draw(Renderer* renderer, const Mat4& transform, uint32_t transformFlags){
_customCommand_drawDebug(_globalZOrder);
_customCommand_drawDebug = CC_CALLBACK_0(A::onDrawDebug,this,transform, transformFlags);
renderer->addCommand(&_customCommand_drawDebug);
}
void onDrawDebug(const Mat4 &transform, uint32_t transformFlags){
if(m_isDrawDebug){
//draw debug
...
}
}
public:
CCSprite*m_sprite;
bool m_isDrawDebug;
CustomCommand _customCommand_drawDebug;
};
上面写法,无论m_isDrawDebug是true还是false,如果场景中加1000个对象a,drawCall数量为1000。
2,不损失性能的写法:
class A:public CCNode{
public:
A(){
m_sprite=NULL;
m_isDrawDebug=false;
}
virtual~A(){}
bool init(){
this->CCNode::init();
//create m_sprite
m_sprite=CCSprite::create();
m_sprite->initWithFile("a.png");
addChild(m_sprite);
....
return true;
}
void draw(Renderer* renderer, const Mat4& transform, uint32_t transformFlags){
if(m_isDrawDebug){
_customCommand_drawDebug(_globalZOrder);
_customCommand_drawDebug = CC_CALLBACK_0(A::onDrawDebug,this,transform, transformFlags);
renderer->addCommand(&_customCommand_drawDebug);
}
}
void onDrawDebug(const Mat4 &transform, uint32_t transformFlags){
//draw debug
...
}
public:
CCSprite*m_sprite;
bool m_isDrawDebug;
CustomCommand _customCommand_drawDebug;
};
上面写法当m_isDrawDebug为false时,如果场景中加1000个对象a,则drawCall数量为1。
cocos2dx 3.x避免空customCommand的更多相关文章
- cocos2dx 3.x 避免空sprite
由于cocos2dx 3.x中autobatch的,如果场景中含有空sprite(并且还不处于visible==false状态)的话,则会打断流水线(因为空sprite的贴图与其它元素的贴图必定不在同 ...
- Cocos2dx源码赏析(2)之渲染
Cocos2dx源码赏析(2)之渲染 这篇,继续从源码的角度来跟踪下Cocos2dx引擎的渲染过程,以此来梳理下Cocos2dx引擎是如何将精灵等元素显示在屏幕上的. 从上一篇对Cocos2dx启动流 ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之LayerColor(8)
在前面文章中讲述了Cocos2d-x引擎OpenGL渲染准备Shader方面,本文主要讲解使用LayerColor来讲述OpenGL的渲染过程. 1.LayerColor对象创建 添加LayerCol ...
- cocos2D-X从的源代码的分析cocos2D-X学习OpenGL(1)----cocos2D-X渲染架构
个人原创.欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man 从本篇文章開始,将分析cocos2D-X 3.0源码,第一部分是从cocos2D-X学习OpenGL ...
- 我所理解的Cocos2d-x
我所理解的Cocos2d-x(完全基于Cocos2d-x3.0,深度剖析计算机图形学,OpenGL ES及游戏引擎架构,全面提升游戏开发相关知识) 秦春林 著 ISBN 978-7-121-246 ...
- Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!
从cocos2dx 3.2项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷! (涉及到3.1.1版本的,请自动对应3.2版本,3.x版本的环境搭建都是一样的) ...
- Cocos2d-x 3.2学习笔记(三)学习绘图API
关于cocos2d-x 3.2 版本的绘图方法有两种 1.使用DrawNode类绘制自定义图形. 2.继承Layer类重写draw()方法. 以上两种方法都可以绘制自定义图形,根据自己的需要选择合适的 ...
- [cocos2d-x]深入--几个代表性的类
摘要: 此文对cocos2d-x引擎中最具代表性,最能体现框架结构的几个类做了简单的介绍, 包括Director,Application, Renderer, EventDispatcher, Sch ...
- 学习cocos 空程序
今天开始学习cocos代码,首先研究源码中的空程序. 在这个程序中,在main函数中,创建了一个Application: int APIENTRY _tWinMain(HINSTANCE hInsta ...
随机推荐
- POJ2762 Going from u to v or from v to u? 强连通+缩点
题目链接: poj2762 题意: 给出一幅单向图.问这张图是否满足 随意两点ab 都能 从a到达b 或 从b到达a 题解思路: 推断一幅图是否满足弱连通 首先想到的是将图中的 强连通分量(能互 ...
- C#.NET常见问题(FAQ)-使用SharpDevelop开发 如何在项目中添加类文件
点击文件-新建-文件,然后再工程内创建文件 或者工程-添加-新建项 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai12 ...
- Session 共享(Custom模式)By Memcached(原创)
1.web.config配置: <machineKey decryptionKey="FD69B2EB9A11E3063518F1932E314E4AA1577BF0B824F369& ...
- Android Developers:日历提供者
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...
- Hibernate(十四)缓存
一.什么是缓存 缓存是介于应用程序和永久必数据存储源之间,目的是为了降低应用程序直接读写永久必数据存储源的频率,从而提高运行性能 缓存通常是在内存中的如: Office中的Word.excel Hib ...
- poj 1286 Necklace of Beads & poj 2409 Let it Bead(初涉polya定理)
http://poj.org/problem?id=1286 题意:有红.绿.蓝三种颜色的n个珠子.要把它们构成一个项链,问有多少种不同的方法.旋转和翻转后同样的属于同一种方法. polya计数. 搜 ...
- SVN如何查看修改的文件记录
主要是有四个命令,svn log用来展示svn 的版本作者.日期.路径等等:svn diff,用来显示特定修改的行级详细信息:svn cat,取得在特定版本的某文件显示在当前屏幕:svn list, ...
- Linux下监视NVIDIA的GPU使用情况(转)
在使用TensorFlow跑深度学习的时候,经常出现显存不足的情况,所以我们希望能够随时查看GPU时使用率.如果你是Nvidia的GPU,那么在命令行下,只需要一行命令就可以实现. 1. 显示当前GP ...
- 如何自定义oauthauthorizationserverprovider错误信息?
We are using the OAuthAuthorizationServerProvider class to do authorization in our ASP.NET Web Api a ...
- 新浪微博API使用初步介绍——解决回调地址的问题
# -*- coding: utf-8 -*- #python 27 #xiaodeng #新浪微博API使用初步介绍——解决回调地址的问题 #http://blog.csdn.net/monsion ...