cocos2d-x重复纹理与遮罩

CocosCreator图集优化实战:从Draw Call原理到性能提升 在游戏开发中,Draw Call(绘制调用)是影响渲染性能的关键指标之一,它直接关系到CPU与GPU的协作效率。其核心原理在于,每次切换不同的纹理资源都会触发一次新的Draw Call,导致渲染状态中断,增加CPU开销。为了优化这一过程,图集(Atlas)技术应运而生,它通过将多个零散的小纹理合并为一张大纹理,使得使用相同纹理的多个精灵(Sprite)能够被合并批次处理,从而显著减少Draw Call次数。这项技术对于提升移动端游戏的帧率稳定性和整体流畅度具有重要价值,尤其在UI复杂、资源丰富的项目中效果显 阅读详情
重复纹理:

先解释下什么是重复纹理。

大家在做游戏的时候,可能会有类似win桌面的平铺效果。如果你做web开发,这个你肯定知道的:background-repeat : repeat | no-repeat | repeat-x | repeat-y,是不是?这就是本文所谓的平铺,它是 在你设置的范围区域内repeat-x,repeat-y全部填充的。

这个纹理的重复,主要设计结构体:ccTexParams。定义如下:

/**

Extension to set the Min / Mag filter

*/

//定义了纹理的一些参数
typedef struct _ccTexParams {
GLuint    minFilter;//纹理过滤器:缩小过滤器
GLuint    magFilter;//纹理过滤器:放大过滤器
GLuint    wrapS;//横向纹理寻址模式
GLuint    wrapT;//纵向纹理寻址模式
} ccTexParams;

例子:

CCRect rect(0, 0, 255, 160);

CCSprite* firedragonpzy = CCSprite::create("firedragonpzy.png");

firedragonpzy->setTextureRect(rect);//CGRect描述了要重复贴图的矩形范围

ccTexParams params = {

GL_LINEAR,

GL_LINEAR,

GL_REPEAT,

GL_REPEAT

};

firedragonpzy->getTexture()->setTexParameters(&params);

firedragonpzy->setPosition(ccp(0, 0));

this->addChild(firedragonpzy);

这样,我们的重复纹理贴图就ok了,大家可以自己尝试下。。。

遮罩:

和重复纹理一样,先解释下什么所谓的遮罩:

想必大家都用过ps吧,当时我记得是设置个蒙版,然后进行遮罩处理,做了2dx的遮罩后突然间明白了ps遮罩原理,当时用的时候也没有考虑这个。【注:我这里讲述的是用CCRenderTexture来处理遮罩,不过这方法可能效率比较低,主要是为了看看CCRenderTexture】

遮罩原理:利用遮罩图片的透明度来处理被遮罩的图片。

cocos2d-x 遮罩,主要涉及到opengl-es的混合ccBlendFunc和渲染纹理CCRenderTexture。

遮罩需要两张图片,遮罩图片A和被遮罩图片B,被遮罩图片B就是你想要遮罩的形状,图片颜色以白色填充就好,颜色无所谓,我们主要利用B的透明度。

遮罩代码:

int w = B->getContentSize().width ;

int h = B->getContentSize().height ;

CCRenderTexture* rt = CCRenderTexture::create(w, h);//创建纹理渲染范围</pre>
ccBlendFunc blendFunc;

blendFunc.src = GL_DST_ALPHA; //表示使用源颜色的alpha值来作为因子

blendFunc.dst = GL_ZERO; //不使用目标颜色

textureSprite->setBlendFunc(blendFunc);

rt->begin();

B->visit();//注意,这里需要先绘制B,被遮罩图片

A->visit();//注意渲染顺序,先渲染的为的精灵的颜色为目标颜色,后渲染的精灵的颜色为源颜色。

rt->end();

CCSprite* firedragonpzy = CCSprite::createWithTexture(rt->getSprite()->getTexture());

this->addChild(firedragonpzy);
<pre>好了,遮罩也ok了,关于opengl的混合 ,大家可以参考:<a title="OpenGL中混色的用法" href="http://www.firedragonpzy.com.cn/index.php/archives/3246" target="_blank">http://www.firedragonpzy.com.cn/index.php/archives/3246</a>
Cocos Creator 3棋牌项目工程化实践:构建、性能与团队协作 在现代游戏开发中,工程化实践是保障项目可维护性、可扩展性和高性能的关键。其核心原理在于通过标准化的流程、工具和规范,将开发、构建、测试、部署等环节系统化、自动化。对于使用Cocos Creator引擎的项目而言,工程化的技术价值尤为突出,它能显著提升开发效率,优化包体大小与运行时性能,并建立有效的质量保障体系。特别是在棋牌类等复杂业务场景中,面对历史遗留代码、多平台适配和频繁迭代的需求,一套完善的工程化方案能够系统性地解决构建部署慢、热更新包巨大、线上问题难定位等痛点。本文聚焦于Cocos Creator 阅读详情

相关推荐

深入Cocos Creator Spine源码:从骨骼动画原理到高级渲染定制

骨骼动画是现代2D游戏开发中实现角色动作与UI动效的核心技术,其原理基于层级化的骨骼变换与插值计算驱动网格顶点运动。在游戏引擎中,高效的骨骼动画系统能显著提升视觉表现力与开发效率。Spine作为行业标准的2D骨骼动画解决方案,通过数据驱动架构将动画数据、状态计算与渲染绘制分离,实现了高性能的动画播放与混合。在Cocos Creator引擎中集成Spine运行时,开发者常会遇到动画混合异常、渲染性能瓶颈等工程实践问题。本文以源码解析为切入点,深入剖析Spine运行时的数据层、计算层与渲染层协作机制,详解骨骼变

weixin_33985679的博客 588

Cocos2d-X 物体重复运动的实现

void Hook::runRotateAction() {     this->setAnchorPoint(CCPointMake(0.5, 1));     CCActionInterval *action1 = CCRotateTo::create(2,-90.0);     CCActionInterval *action2 = CCRotateTo::create(2,

u011269801的专栏 1316

cocos2d-x学习笔记——双重纹理透明特效

就是利用了shader,读取两块纹理,然后通过一定的算法计算出叠加后的色值,最后渲染出来。 我们了解到,渲染sprite的类是TriangleCommand,这个类只能渲染多个三角形,并且只能渲染一块纹理。因此,我们要使用CustomCommand来渲染两块纹理。 详情:https://www.jianshu.com/p/94645feba9bb

cocos2dx 动作篇 重复动作 RepeatForever的用法

Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); Sprite * sp = Sprite::create("HelloWorld.png"); sp->setPosition(Point(visibl

优快云_WHS的专栏 1万+

ARM架构下Horizon Client安装全攻略:从依赖检查到环境变量配置

本文详细介绍了在ARM架构设备上安装VMware Horizon Client的全过程,包括依赖检查、软件包获取、系统部署和环境变量配置。特别针对华为鲲鹏等ARM平台,提供了从基础准备到性能优化的完整指南,帮助用户高效完成虚拟桌面客户端的部署与调优。

github5actions的博客 556

[语义分割]SPP、空洞卷积与ASPP总结

ASPP全称:Atrous Spatial Pyramid Pooling,中文可以理解为空洞空间卷积池化金字塔或者多孔空间金字塔池化。在这其中,要理解两个概念:一个是SPP,池化金字塔结构或者叫空间金字塔池化层,都是一个东西;另一个是Atrous,空洞卷积,两个加在一起就是ASPP。 首先说一下SPP:Spatial Pyramid Pooling。这个结构出自于论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Re

lipengfei0427的博客 2万+

cocos2dx的runAction: 重复执行,多个动作连接执行,多个动作同时执行的实现

cocos2dx的runAction: 重复执行,多个动作连接执行,多个动作同时执行的实现

芒果布丁00的博客 1万+

auto.js梦幻西游游戏脚本,梦幻西游脚本开发思路

本篇文章给大家谈谈梦幻西游脚本用什么语言写,以及auto.js梦幻西游游戏脚本,希望对各位有所帮助,不要忘了收藏本站喔。

npy199331的博客 1939

cocos2dx重复执行action,多个action连接执行,多个action同时执行

转载请注明,原文地址:  https://blog.youkuaiyun.com/u013174689/article/details/41959241?utm_source=tuicool&amp;utm_medium=referralcocos2dx的 runAction,如果某个动作反复执行用cc.RepeatForever:create,多个动作连接执行用cc.Sequence:create,多个动作...

小回忆i 1711

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 621

车载仪表-功能点测试大全(超详细,细分可作测试用例)

汽车仪表系统发展经历了机械式、电气化到智能化的演变,目前全液晶仪表渗透率达73.4%。文章详细梳理了仪表功能测试要点,包括UI界面显示一致性、按键响应、FM收音、信号灯显示、USB功能、蓝牙连接、胎压监测、导航系统、WiFi投屏、倒车影像及多媒体播放等关键功能模块的测试标准。特别关注界面切换流畅度、功能稳定性及异常情况处理能力,如投屏状态下是否卡顿、导航中断后能否自动恢复等。测试覆盖了CarPlay、AndroidAuto等主流投屏方案的兼容性验证,确保各类交互场景下的系统可靠性。

weixin_51551002的博客 2067

西蒙iphone-OpenGL ES 教程-10 : 多重纹理,重复纹理,并结束书本时代

OpenGL ES 10 – 多重纹理,重复纹理,并结束书本时代 我的朋友昨晚留在我家,并且我们喝点啤酒一起聊天。这时候我告诉他我正在写一些教程。所有的时间都是我在说,他的脸上不断的出现这是什么什么的表情,我告诉他,所有人都在网上看到这些教程。他不赞成这个:把所有的东西都放在网上实在是太奇怪了。 我自己在想,现在已经不是书本的时代了,我们可以在网上看到许多好的教程,来帮助我们学习。是时候结

清酒三两三 1455

YOLOv10改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv10目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 2189

cocos2d-x重复纹理与遮罩 cocos2d-x重复纹理与遮罩

本文为firedragonpzy原创,转载务必在明显处注明: 转载自【Softeware MyZone】原文链接: http://www.firedragonpzy.com.cn/index.php/archives/3252 欢迎热爱编程的朋友们参与到cocos2d-x编程中,为了给大家提供良好的交流环境,网站以开启QQ群 Software MyZone:66202765(群号,欢迎加

wind的专栏 1168

通过情感分类实例 详细介绍如果借助Huggingface平台 完成Transformers模型运行(包括配置环境-tokenizer-Model-输出头-预测)

attention_mask和padding是配套使用的,当人为去修改padding的时候,也要把attention_mask里面的参数进行修改。下载Huggingface包,Huggingface可以说是一个社区,集成了很多nlp的模型、数据集、预训练权重文件等等,并且免费,只需要pip install下载即可。那么用什么做分类就选择什么输出头,就import什么东西。代码中使用了自动分词器选择,它是由checkpoint指定的预训练模型关联的,不用我们自己选择tokenizer,它自动帮我们选择好了。

LZL2020LZL的博客 1136

【产品】 产品设计:如何解决铝合金氧化着色后表面硬度低的问题(硬质氧化)

1、氧化处理技术 1)化学氧化 化学氧化处理所获得的膜层较薄,一般厚度为0.5μm ~4μm,质软不耐磨,抗蚀能力低于阳极氧化膜。 一般不宜单独便用,由于化学氧化膜吸附能力好,主要作用于油漆的底层,化学氧化按其溶液性可分为碱性和酸性两种。按其膜层性质可分为氧化膜,磷酸盐膜、铬酸盐膜及磷酸一铬酸盐膜等(这类型的氧化膜是可导电)。 2)电化学氧化(阳极氧化) 电化学氧化(俗称阳极氧化)是铝及...

产品线负责人 9741

cocos脏话过滤_cocos2d-x重复纹理与遮罩

本文为firedragonpzy原创,转载务必在明显处注明:转载自【Softeware MyZone】原文链接:http://www.firedragonpzy.com.cn/index.php/archives/3252欢迎热爱编程的朋友们参与到cocos2d-x编程中,为了给大家提供良好的交流环境,网站以开启QQ群Software MyZone:66202765(群号,欢迎加入,若满,请加1群...

weixin_32687311的博客 237

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C++与Cocos2d-x实战:从零复刻《植物大战僵尸》的架构与优化

在游戏开发领域,C++因其高性能和硬件级控制能力,常被用于开发实时计算密集的2D游戏。结合Cocos2d-x这一成熟的跨平台2D游戏引擎,开发者可以高效构建渲染、动画、物理等核心模块。这种技术组合的价值在于,它能将底层性能优势与上层开发效率相结合,特别适合处理大量游戏实体(如僵尸、子弹)的实时状态更新与碰撞检测。在实际应用场景中,通过对象池管理频繁创建销毁的实体,并利用纹理图集优化渲染性能,是保障游戏流畅运行的关键实践。本文以经典塔防游戏《植物大战僵尸》的复刻为例,深入解析如何运用C++面向对象设计与Coc

weixin_34008933的博客 424

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AndEngine与Cocos2d-x深度对比:2D游戏引擎选型实战指南

在移动游戏开发中,游戏引擎是构建项目的核心框架,其架构设计直接决定了开发效率与最终性能表现。引擎通过封装底层图形API(如OpenGL ES)和提供场景管理、物理模拟等模块,简化了游戏开发流程。理解引擎的渲染原理、内存管理机制和跨平台实现方式,对于优化游戏性能、避免常见问题(如Cocos2d游戏黑屏)至关重要。从技术价值看,合适的引擎能降低开发成本,提升代码可维护性,并保障项目长期稳定运行。在2D手游、微信小游戏等应用场景中,开发者常面临在轻量级原生引擎与功能丰富的跨平台引擎间的抉择。本文聚焦于AndEng

weixin_33675507的博客 376

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Cocos2D-X 2.2.3 UI系统深度解析:从核心原理到实战优化

游戏UI开发的核心在于理解渲染、事件与内存管理的基本原理。现代游戏引擎的UI框架,无论设计得多么高级与便捷,其底层逻辑往往根植于节点树、坐标系统与事件分发这些基础概念。以Cocos2D-X 2.2.3的经典UI系统为例,其架构清晰地体现了“一切皆节点”的设计哲学,通过CCNode、CCMenu、CCControl等核心类,将视觉元素的组织、触摸事件的响应与控件状态的管理融为一体。掌握这套相对原始但直接的API,不仅能帮助开发者高效维护大量现存的**遗留代码库**,更能深刻理解高级UI编辑器背后的运行机制与调

weixin_30340617的博客 350

Cocos2d游戏开发进阶:从API调用到架构设计与性能优化实战

游戏引擎是游戏开发的核心框架,它封装了底层图形渲染、物理模拟、音频处理等复杂系统,为开发者提供高效的创作工具。其工作原理在于通过场景图管理游戏对象,并利用渲染合批、内存管理等机制优化性能。深入理解引擎机制的技术价值在于,开发者能突破“黑盒”限制,从被动调用API转向主动设计,从而构建出高性能、可维护的大型项目。这在移动游戏、独立游戏等对包体大小、帧率稳定性要求极高的应用场景中尤为关键。本文聚焦Cocos2d引擎,深入探讨其节点树与渲染合批机制对Draw Call的优化原理,并解析如何通过对象池与纹理图集管理

ciqiaofu0192的博客 383

使用许多小图拼接的大图制作精灵

    写在前头:2年前,我使用cocos2d-x自娱自乐开发了一些小游戏,中间突然不想搞了,主要是因为一个人做美术太烦了,用falsh做的那个半吊子图片不忍直视,做出来的东西丑陋无比,玩的也没意思。不过现在开始流行微信小游戏,又想认真搞一个棋牌游戏来玩玩,所以重新开始学习了。    在cocos2d官网搜了下最新的游戏引擎,发现了最新的开发工具是cocos creator,一打开这个工具还以为是...

m0_37655222的博客 1950

cocos2dx新特性的使用

只看原创 置顶【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader? 有小伙伴提出了这个问题,其实GLProgramCocos2d-x引擎自带了。完全可以直接拿来用。 先上图吧。使用opengl前后的对比: 1.在cpp中使用openGL shader。 (1... 原创 2014-04-17 23

时间溜走了的博客 610

CocosCreator 2.x飞机游戏开发实战:架构、性能优化与核心模块详解

在2D游戏开发领域,对象池和碰撞检测是保障游戏流畅运行的核心技术。对象池通过复用游戏对象,避免了频繁的实例化与销毁,能有效减少垃圾回收(GC)带来的性能卡顿,尤其适用于飞机游戏中子弹、敌机等大量生成的对象。碰撞检测则负责处理游戏对象间的交互,其效率直接影响游戏手感与性能表现。通过合理设置碰撞分组与优化碰撞体形状,可以大幅提升检测效率。这些技术共同支撑起游戏的核心玩法循环,在横版或纵版卷轴射击等经典品类中尤为重要。本文将结合CocosCreator 2.x引擎,深入探讨如何运用对象池管理子弹与敌机,并优化碰撞

dianjiaxian1205的博客 319

Free Texture Packer 精灵表制作实战:从页面卡顿到一次打包出图

Free Texture Packer 是一款免费开源的精灵表制作工具,它能把几十上百张小图片智能合并成一张纹理图集(sprite sheet),从而显著减少 HTTP 请求、降低游戏 Draw Call、提升页面加载速度。本文将从一次真实的"上线前夜"场景讲起,带你走完从克隆仓库、跑起应用、打包出图到自定义导出模板的完整链路,并在最后附上新手最容易踩的坑。 ## 一、先讲个场景:活动页上线前夜

gitblog_01076的博客 999
上一篇: CCLog用法
下一篇: CCSpriteBatchNode 和 CCSpriteFrameCache 的区别
-夜下月光-
博客等级 码龄15年 20粉丝 35原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值