(1) 内存问题及纹理的渲染
当我们把游戏放到ios和android上的时候,我们就得考虑OpenGL ES(embedded system)优化的问题,主要问题就是内存(显存)问题和运行速度。
本小专题讲内存:OpenGL ES 纹理的宽和高都要是2的幂指数,480x320的图片载入内存, 它其实会被变成一张 512x512 的纹理,所以如果使用单个精灵的载入,必然会引起内存的浪费,而且一次次的载入单个精灵会增加纹理的渲染数,若精灵一多,会影响游戏的速度
解决:
//加载地图纹理集,解决内存问题,减少纹理切换
CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("ninja.plist", "ninja.png");
CCSprite *projectile = CCSprite::spriteWithSpriteFrameName("Projectile.png");
CCSprite *target= CCSprite::spriteWithSpriteFrameName("Target.png");
CCSprite *player= CCSprite::spriteWithSpriteFrameName("Player.png");
projectile->setPosition(ccp(50, 20));
target->setPosition(ccp(120, 20));
player->setPosition(ccp(220, 20));
this->addChild(projectile);
this->addChild(target);
this->addChild(player);
(2)运行速度:纹理的渲染和GLDrawArray的调用
画一个图像都会切换一次纹理并呼叫一次 GLDrawArray , 要是画几百个图像 , 你可想而知
解决:
//减少对dlDrawArray的呼叫(每画一个图都会呼叫一次)
CCTexture2D *texture = CCTextureCache::sharedTextureCache()->textureForKey("ninja.png");
CCSpriteBatchNode *spriteBatch = CCSpriteBatchNode::batchNodeWithTexture(texture);
this->addChild(spriteBatch);
spriteBatch->addChild(projectile);
spriteBatch->addChild(target);
spriteBatch->addChild(player);
this->addChild(spriteBatch);
分享到:
相关推荐
《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...
同时,它还支持纹理 atlases,这是一种将多个小图像打包成一个大纹理的技术,可以减少GPU的内存交换,提高渲染效率。 此外,cocos2d-x的事件系统也是其核心特性之一。它允许开发者方便地处理触摸、键盘、鼠标等各种...
10. **性能优化**:Cocos2d-x 3.1对内存管理和渲染效率进行了优化,以确保在不同设备上的流畅运行。 11. **脚本支持**:虽然3.1版本主要以C++为主,但Cocos2d-x也支持Lua和JavaScript,允许开发者选择更适合自己的...
2. **C++核心**:3.8版本的cocos2d-x使用C++作为主要开发语言,保证了性能和灵活性,同时也通过tolua++和jsb提供Lua和JavaScript接口。 3. **强大的渲染引擎**:支持精灵、批处理、骨骼动画、物理引擎等多种图形...
3. **图形渲染**:学习如何使用Cocos2d-x的绘图API,包括纹理、精灵批处理、动画和粒子系统,创建丰富的视觉效果。 4. **物理引擎**:了解Cocos2d-x内置的Box2D或Chipmunk物理引擎,如何模拟真实世界的物理行为,如...
9. **纹理(Texture)**:cocos2d-x使用Texture Atlas管理纹理,减少内存占用并优化渲染性能。纹理 atlases是包含多个小图的一张大图,用于批量加载和渲染。 10. **资源管理(Resource Management)**:cocos2d-x提供了...
6. **性能优化**:通过纹理 atlases 和批处理技术,提高了图像渲染的效率,减少了内存占用。 7. **脚本语言支持**:除了C++,还支持Lua和JavaScript,使得非C++开发者也能快速上手。 8. **扩展性和自定义**:Cocos...
《Cocos2d-x实战 Lua卷》是一本深入讲解Cocos2d-x游戏开发的书籍,专注于使用Lua脚本语言进行编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于2D游戏、教育应用和各种互动媒体项目。这本书的源码提供了丰富的...
为了提高游戏性能,cocos2d-x支持批处理、纹理 atlases 和精灵帧动画,减少draw call。另外,合理的内存管理、避免不必要的计算和使用高效的算法也是优化的关键。 总的来说,cocos2d-x提供了一套完整的2D游戏开发...
Cocos2d-x提供了多种性能优化手段,如批处理渲染、纹理 atlasing、资源预加载等,确保游戏在各种设备上流畅运行。 十二、调试与测试 Cocos2d-x提供了一系列调试工具,如Cocos Console、Profiler等,帮助开发者定位...
cocos2d-x提供了多种性能优化手段,如批处理渲染、纹理 atlases、自动内存管理等。开发者应学会合理使用这些技巧,确保游戏在各种设备上运行流畅。 十一、发布与打包 完成游戏开发后,cocos2d-x提供了一套打包工具...
《cocos2d-x-2.1.4帮助文档》是针对游戏开发框架cocos2d-x的一个详细参考资料,该框架是用C++编写,广泛应用于2D游戏、实验性的3D游戏以及实时渲染应用程序的开发。cocos2d-x是开源的,基于cocos2d-iphone扩展而来,...
cocos2d-x是一个广泛使用的开源跨平台2D游戏开发框架,其基于cocos2d-iphone,并扩展到支持多种操作系统,如iOS、Android、Windows等。2.1.4版本作为历史的一个节点,它记录了cocos2d-x发展过程中的一个重要阶段,...
Cocos2d-x 是一个广泛使用的开源游戏开发框架,它基于C++,并提供了Python、Lua等语言的绑定,使得开发者能够用多种编程语言来创建2D和3D游戏。这个" Cocos2d-x demo程序 "是作者使用Cocos2d-x编写的示例项目,用于...
《cocos2d-x中国象棋》是一款基于Cocos2d-x游戏引擎开发的桌面棋类游戏,专注于呈现中国传统象棋的玩法。虽然它没有内置AI功能,但该项目的源代码提供了一个很好的学习平台,让开发者能够理解如何利用Cocos2d-x构建...
这个压缩包“cocos2d-x-3.2_richer(第四部分).rar”包含了使用Cocos2d-x 3.2版本开发大富翁游戏项目的部分源代码,这将带我们深入理解如何在Cocos2d-x中构建一款完整的游戏。 1. **Cocos2d-x 3.2 版本特性** - ...
【cocos2d-x版本的对对碰代码】是一个基于Cocos2d-x游戏引擎实现的经典消除类游戏项目,它将原有的Cocos2d版本的对对碰游戏移植到了跨平台的Cocos2d-x框架下。Cocos2d-x是Cocos2d的C++扩展,支持iOS、Android、...
cocos2d-x是cocos2d家族的一员,基于cocos2d-iphone扩展而来,使用C++编写,同时支持Lua和JavaScript作为脚本语言。它的核心功能包括渲染引擎、物理引擎、动画系统、音频处理、触摸事件处理等,能够帮助开发者快速...
1. **3D图形渲染**:Cocos2d-X使用OpenGL ES作为其底层渲染库,可以创建复杂的3D模型、纹理、光照和阴影效果。跑酷游戏通常需要流畅的3D人物动画和环境交互,这些都依赖于高效的3D渲染技术。 2. **物理引擎**:游戏...
《Cocos2d-X by Example Beginner's Guide》是2013年由Packt Publishing出版的一本面向初学者的Cocos2d-X教程。Cocos2d-X是一个强大的、开源的游戏开发框架,支持跨平台开发,包括Android和iOS等移动设备。这本书...