cocos2dx2.x杂记之CCSpriteBatchNode

CC平台与OpenRouter集成:多模型API统一调度实践 在AI应用开发中,多模型API调度是提升系统灵活性的关键技术。通过代理层封装和路由管理,开发者可以统一调用不同供应商的AI服务(如GPT-4、Claude等),实现模型间的无缝切换。这种技术方案不仅能简化代码结构,还能通过故障转移机制保障服务高可用性。以OpenRouter为代表的聚合平台,进一步提供了统一的计费管理和流量监控能力。在实际工程场景中,这类集成方案特别适用于需要同时使用多个AI模型的电商客服、智能问答等系统。通过CC平台的中控能力与OpenRouter的API网关深度整合,开发者可以构建出响应 阅读详情

什么是CCSpriteBatchNode


作用:

按自己的理解就是,将所有具有相同纹理的精灵当成一个“节点”,区别是:这个节点有多份需要渲染的纹理。在递归渲染遍历到这个CCSpriteBatchNode节点的时候, 跟引擎一般的渲染机制不同,它只有一个“入口”,在draw之前的比如kmGLPushMatrix()等就是入口。只有一个“出口”,draw之后的kmGLPopMatrix()等。之间的draw就 是一堆的纹理渲染。过程上看,省了很多的“入口”准备和“出口”恢复操作。缺点就是只有相同纹理的在同一节点上的精灵可以批次渲染。


用法:

const char *pImgName = "testBatchNode.png";//图片

const int numOfCopy = 1000;//1000个相同纹理的Sprite

const int zOrder = 100;

//最好可以预判出数量大概有多少,改进一点性能。

CCSpriteBatchNode *pBatchNode = CCSpriteBatchNode::create(pImgName,numOfCopy);

//需要批次渲染的精灵的共同节点。

pLayer->addChild(pBatchNode,zOrder);

CCSprite *pTmpSp = NULL;

for(int i = 0;i<100;i++)

{

pTmpSp = CCSprite::create(pBatchNode->getTexture());

//pTmpSp->setPosition....

//好像只能相同zOrder

//pBatchNode->addChild(pTmpSp);

}

STM32Cubemx-H7-17-麦克纳姆轮驱动 我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。 阅读详情

相关推荐

VS code平台调试AutoLISP程序教程

VS code平台调试AutoLISP程序教程

BearElder的博客 3183

CCSpriteBatchNode

精灵是游戏中十分重要的组成部分,随处可见,如:游戏背景、NPC、人物、道具等。在cocos2d-x引擎中,只要是用图片展示的,基本上需要使用精灵类。 1. 首先来了解一下跟精灵相关的几个类: (1) CCTexture2D 可以把它看成一个纹理,它是cocos2d-x渲染图形的重要参数,用来贴图,因为cocos2d-x使用opengl es绘制2d图形的,它的尺寸是2的n次方。一般通过以下方

宇智波_呵呵的专栏 1352

【Java】利用反射执行Spring容器Bean指定的方法,支持多种参数自动调用

目录 使用情景 目的 实现方式 前提: 思路 核心类 测试方法 使用情景 将定时任务录入数据库(这样做的好处是定时任务可视化,也可以动态修改各个任务的执行时间),通过反射执行对应的方法; 配合Netty实现简单的HTTP请求处理框架 其他需要使用反射执行Spring方法的业务亦可 目的 很多文章都提到了反射,但是对于方法参数处理这一块都是明确了类型,不支持按照实际参数动态转换,而本篇文章提供了一个思路怎么做到方法参数的动态调用。 大家也可以...

ITjianshuzhai的博客 2333

CCSpriteBatchNode(精灵池 open draw draw。。。。。close)

#ifndef __CC_SPRITE_BATCH_NODE_H__ #define __CC_SPRITE_BATCH_NODE_H__ #include "base_nodes/CCNode.h" #include "CCProtocols.h" #include "textures/CCTextureAtlas.h" #include "ccMacros.h" #in

sssssNian的专栏 1034

从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12)

今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。

weixin_49518391的博客 3762

算法笔记 经典取石子游戏总结 博弈论

经典取石子游戏总结 1.巴什博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个,最多取m个,先取完者获胜(即没有石子取的人失败)。A与B都足够聪明,问A能否获胜。 结论:当n%(m+1)!=0时A必胜,否则必败。 2.斐波那契博弈 有一堆石子共n个,A和B轮流取,A先取。每次最少取1个。第一次不能取完。从第二次开始,每个人取的石子数至少为1,至多为前一个人取的石子数的2倍。先取完者获胜。...

CraigMC的博客 2934

CCSpriteBatchNode 和 CCTextureAtlas 详解

CCSpriteBatchNode的初始化只要一张图片,也就是那张大图。 然后把所有用到那张大图里面的小图的sprite都加到 CCSpriteBatchNode的child,绘制效率就会提高。 下面是TestCpp中的Demo,SpriteTest SpriteBatchNode1::SpriteBatchNode1() {     setTouchEnabled( true )

月亮哥的专栏 1211

投入产出表之直接消耗系数和完全消耗系数计算--基于Excel

介绍 上篇博客已介绍投入产出表的结构类型及意义解读,在此就不重复写了。 投入产出法中相对稳定的因素是一些系数,根据投入产出表可以计算很多系数: 案例 案例数据即流量矩阵,采用的是中国2012年的部分行业数据,若有不对,请批评指正哈。 直接消耗系数的计算 根据上表和直接消耗系数的计算公式,直接消耗系数矩阵通常用A表示。农林牧渔产品和服务部门对其他部门产品的直接消耗系数分别为: 这些消耗系数的经济意义是,农、林、牧、渔产品和服务部门每生产单位(1亿元)总产出,要直接消耗0.1378亿元本部门产品,0.26

m0_46271335的博客 7万+

CCSpriteBatchNode的作用,使用

【第一段代码】 Sprite1::Sprite1() { setTouchEnabled( true ); CCSize s = CCDirector::sharedDirector()->getWinSize(); addNewSpriteWithCoords( ccp(s.width/2, s.height/2) ); } void S

wu_123_456的专栏 1045

RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程

当我们在公司接触Autosar开发环境时,基本都是完整的Davinci Configurator的配置工程,我们只能修修补补。 从本章开始将手把手搭建Rh850基于Vector公司Davinci Configurator的autosar配置工程。主要涉及到OS,COM,DCMM,NVM,BSWM,ECUM等基本模块,包括Vlink,memap使用,XCP标定的实现等。基本是实现一个基础版的项目开发。包括后期的GreenHills编译问题处理,生成最终的Hex文件。

weixin_42412049的博客 1万+

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 152

cocos2d开发学习五:精灵节点CCSpriteBatchNode的渲染和纹理集Texture Atlases内存优化...

本章其实主要是系统的理解下Sprite精灵节点的创建,然后引入精灵节点和纹理集的概念 CCSprite 最简单的生成方式就是用一个纹理贴图。 CCSprite *_firstSp = [CCSprite spriteWithFile:@"icon.png"]; CGSize wins = [[CCDirector sharedDirector] winSize]; _firstS...

mmdev 249

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1522

我的Cocos2d-x学习笔记(八)利用CCSpriteBatchNode进行优化

OpenGL是一个基于C语言的三维图形API,是一个开放的、跨平台的图形接口。 OpenGL ES是OpenGL在移动设备上的版本。 Cocos2d-x是一个基于OpenGL的游戏引擎,渲染功能由OpenGL实现。 游戏中会用到许多图片资源,对图片资源渲染进行优化能明显提高效率。 OpenGL中纹理的长和宽像素是2的幂,大小不足的纹理补充到2的幂大小;可以通过把多张小图片合成一张大...

weixin_30608503的博客 237

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【Cocos2d-X开发学习笔记】第06期:渲染框架之精灵类(CCSprite)的使用

一、精灵类(CCSprite)       精灵类CCSprite是一张二维的图片对象,它可以用一张图片或者一张图片的一块矩形部分来定义。CCSprite和它 的子类可以作为精灵批处理类的子项。它的继承关系如下图所示。 1、CCSprite类主要保护的成员数据如下图所示。 2、CCSprite类的主要公共函数如下图所示。       这里需

我是一条寻水的鱼 4192

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

3.游戏优化(CCSpriteBatchNode)

 1 FPS含义 2 渲染树的结构 3 优化原理 CCSpriteBatchNode介绍 A 先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一次渲染调用。也就是说,渲染的次数越少,游戏的运行效率越高。 B CCSpriteBatchNode就是cocos2d-x为了降低渲染批次而建立的一个专门管理精灵的类。

涂作权的博客 1247

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Cocos2d-x(8):CCSpriteBatchNode批处理精灵学习

  一、现在要处理的问题  如果增加多个相同精灵(超多),难道要一个一个渲染??有没有更效率的方法呢?? 答案是有的,使用批处理渲染。使用CCSpriteBatchNode即可实现这个效果。   二、CCSpriteBathNode文档 大概理解下 /** CCSpriteBatchNode is like a batch node: if it contains children,...

爱拼才会赢 973

利用CCSpriteBatchNode来批量渲染CCSprite的时候无法设置shader的问题

之前按着网上的设置,已经可以将CCSprite

u014405261的专栏 1825

【爱上cocos2d-x之八】使用CCSpriteBatchNode优化绘制一批相同的精灵

当我们要加载一批相同的精灵时,如果采用单独绘制的话,代码如下: //创建很多个小精灵 for(int i=0;i<1000;++i) { CCSprite* sprite=CCSprite::create("CloseNormal.png"); sprite->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320));

三十画生 一个北漂的人 8500

CCSpriteBatchNode提高渲染效率

利用texturepacker打包工具,把要用到的图打包成一张大图,在cocos2dx中通过CCSpriteBatchNode进行渲染,能提高效率。下面直接上代码: bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() )

u011922261的专栏 1119

CCSpriteBatchNode的使用

先参考这个:http://www.cocos2dev.com/?p=331使用CCSpriteBatchNode时,所使用的贴图必须是同一张图片,意思是CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("t.png");里面的“t.png"要和batchNode->addChild(picture)里的picture是同一张图片,同一

好重好重的专栏 752

CCSpriteBatchNode(附:CCMenu与CCSpriteBatchNode的问题)

一般游戏图片资源会打包成一张大图,这样节省空间,又提升速度。打包工具有Zwoptex和texturepacker等等。    CCSpriteBatchNode的初始化只要一张图片,也就是那张大图。然后把所有用到那张大图里面的小图的sprite都加到 CCSpriteBatchNode的child,绘制效率就会提高。 1) 缓冲sprite帧和纹理         // 从纹理贴图集中预加载...

weixin_34406796的博客 172

cocos2d - CCSpriteBatchNode的使用

有点:CCSpriteBatchNode 中的所有CCSprite只会被渲染1次,因此可以提高游戏的FPS。 限制:加入到 CCSpriteBatchNode 中的CCSprite必须使用同一张纹理图。 问:什么时候应该用CCSpriteBatchNode? 答:比如游戏中的子弹 就很适合用它,因为子弹都是一个样子。 答:通过TexturePacker生成的纹理图也适合使用它。

夏天的学习小站 2万+

CCSpriteBatchNode的特点和使用方法

CCSpriteBatchNode是一个批处理绘制精灵节点,其特点是共享同一个纹理,CCSpriteBatchNode最大的优点就是将所有同属性的纹理进行一次绘制,CCSpriteBatchNode并不能添加CCLabel之类(继承自CCNode的节点),仅处理共享纹理的精灵。另外一点特别要注意的是CCSpriteBatchNode通过addSpriteWithoutQuad增加子节点的方式跟其他

davidsu33的专栏 3470

cocos2d -x 精灵集合CCSpriteBatchNode的使用

有点:CCSpriteBatchNode 中的所有CCSprite只会被渲染1次,因此可以提高游戏的FPS。 限制:加入到 CCSpriteBatchNode 中的CCSprite必须使用同一张纹理图。 问:什么时候应该用CCSpriteBatchNode? 答:比如游戏中的子弹 就很适合用它,因为子弹都是一个样子。 答:通过Te

果汁的专栏 2097

单参构造函数的使用

class A{public://    explicit A(int i){a = i; cout     A(int i){a = i; cout     A(const A& ra){a = ra.a; cout     void static getNumOfCopy(){cout private:    int a;    static int numOfCopy;};int A::nu

todototry的专栏 1882
上一篇: Cocos2dx的内存优化总结
刘龙sir
博客等级 码龄16年 1粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值