cocoscreator如何加载一张图片并渲染出来的

author author     2023-05-11     460

关键词:

参考技术A 导读:   ccc 我们在使用一张图片的时候,使用cc.laod api ,回调传回来cc.spriteFrame 或者cc.texture来供我们使用。下面的内容会解密中间到底经历了哪些过程(native)。

加载:首先会在js引擎中,通过一些方式得到资源的完整信息,包括资源的完整路径资源类型等(可以了解下load的加载过程)。

然后调用jsb_global_load_image方法,利用native来加载这张图片到内存中,拿到内存首地址和内存大小。

把刚才拿到的信息转为jsObject,内存地址和大小会被描述成arrayBuff,包装好的对象回调回给js。

js引擎拿到回调后会创建一个texture来,然后调用 texture.initWithElement()方法,把之前包装好的数据再传回给native的texture对象(js的texture利用jsb来管理native的texture对象,并且是1对1的)。

渲染:native的texture接收到数据后会用OpenGL的api来开辟显存,绑定纹理数据(分配一个纹理id给native的texture)。然后通过device(DeviceGraphics是单例,大多数的OpenGL api接口都是通过他调用)渲染到屏幕上。(OpenGL api可自行查找资料)

我们在js端让一个精灵显示图片的时候,是在load的回调里 把cc.spriteFrame给精灵使用,spriteFrame里持有cc.texture对象,cc.texture又持有由native返回的数据。通过这种方式让纹理数据和将要渲染的对象绑定起来。

还有许多包括顶点数据  node的位置 大小 shader 等等 都在RenderFlow等类中获取和封装(比较复杂),最后配合纹理数据 渲染出来。我们加载的一张图片就这样渲染到了屏幕上。

流程图:

cocoscreator卡在加载资源

cocoscreator卡在加载资源具体解答如下1、软件包故障:重新从官网,应用市场或应用商店下载最新版本,重新安装。2、系统版本不兼容:去官网换一个版本下载并重新安装。参考技术A静态加载/动态加载cocos的资源加载方式有静态... 查看详情

cocoscreator小记

一个游戏场景有若干个节点组成,这些包括渲染节点,UI节点。 这里弱化了Layer层的概念。一个游戏由若干个场景组件。  每个节点由若干个组件和若干子节点组成。 例如UI节点中的按钮节点。子节点有一张背景图... 查看详情

微信小游戏开发之cocoscreator资源加载方式

参考技术ACocosCreator中图片、Json等资源的动态加载CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的补充和分析。CocosCreator导入资源方式:项目... 查看详情

cocoscreator-精灵动态加载图片资源,实例化精灵(代码片段)

CocosCreator-3.0-精灵动态加载图片资源,实例化精灵varspriteFrameEnemyBigGlobal:SpriteFrame;//精灵框架敌人大号全局变量onLoad()console.log('-LifeonLoad-');//加载SpriteFrame,image是ImageAsset,spriteFrame是im 查看详情

cocoscreator-精灵动态加载图片资源,实例化精灵(代码片段)

CocosCreator-3.0-精灵动态加载图片资源,实例化精灵varspriteFrameEnemyBigGlobal:SpriteFrame;//精灵框架敌人大号全局变量onLoad()console.log('-LifeonLoad-');//加载SpriteFrame,image是ImageAsset,spriteFrame是im 查看详情

cocoscreator-精灵动态加载图片资源,实例化精灵(代码片段)

CocosCreator-3.0-精灵动态加载图片资源,实例化精灵varspriteFrameEnemyBigGlobal:SpriteFrame;//精灵框架敌人大号全局变量onLoad()console.log('-LifeonLoad-');//加载SpriteFrame,image是ImageAsset,spriteFrame是im 查看详情

vue打包空白,图片没加载,背景颜色没有渲染出来-配置秘诀

找到config文件夹下的index.js文件修改一下位置看清楚是build(上边还有个dev是开发环境下的配置,不需要改动)下的assetsPublicPath:将‘/’改为‘./’在css中写的background-img的路径出错需要找到build文件夹下的utils.js,修改一下位置&nb... 查看详情

cocoscreator—优化首页打开速度

CocosCreator是一个优秀的游戏引擎开发工具,很多地方都针对H5游戏做了专门的优化,这是我比较喜欢CocosCreator的一点原因。其中一个优化点是首页的加载速度,开发组为了加快首页的渲染速度,减少白屏时间,把逻辑代码和首页... 查看详情

OpenGL纹理渲染颠倒和模糊

...白痴,并试图切换到使用包含所有纹理的一张图片(无论如何它们都很小),这让我有点投入。现在,问题出现了。当加载比我的原始纹理(10x10)更 查看详情

如何查看html页面中图片的数量?

...。。-----------------请教,我想做一个图片预加载的效果,如何获取所有的HTML中的图片和背景图片呢?背景图片document.getElementById("id").style.backgroundImagedocument.getElementByTagName('img')如果能一次遍历每个元素并判断每个元... 查看详情

cocoscreator聊天气泡

转自:http://blog.csdn.net/Q1648778537/article/details/78847199建Sprite.Atlas:Sprite显示图片资源所属的atlas图集资源SpriteFrame:渲染Sprite使用的SpriteFrame图片资源Type:渲染模式,包括普通(Simple) 查看详情

html可以实现点击图片查看下一张吗?

...。在图片上设置点击事件,点击后触发函数index+1渲染下一张,计算一下index的最大值。循环对象.length如果大于渲染第一张如果是写死的比如3张图片点击按钮渲染A图片点击A图片渲染B图片点击B图片渲染C图片点击C图片渲染A图片。... 查看详情

ccvirtualgridlist-cocoscreator虚拟列表

参考技术ACCVirtualGridList是基于CocosCreatorScrollView+Layout编写的一个具有虚拟布局特点的滚动列表控制容器。支持平滑滚动显示大量数据对象,图片元素可以实现异步按帧加载,保证滚动平滑。具有滚动翻页功能,自适应宽度显示多... 查看详情

图片的解压缩渲染

...说,图片是最占用手机内存的资源,将一张图片从磁盘中加载出来,并最终显示到屏幕上,中间经过了一系列复杂的处理过程。二、图片加载的工作流程假设使用+imageWithContentsOf 查看详情

texture的渲染大图裁剪成小图并保存下来

我们今天就简单说下cocos2d的Texture的简单用法,并将一张大图裁剪成小图并保存起来我们先准备一张大图,如下:只看图,表太在意内容啊。我们的目的就是将这张大图裁剪成一张张的小图并保存下来。首先,我们要将它裁剪成... 查看详情

cocoscreator教程(入门篇)

参考技术A自动释放资源:切换场景后,上一个场景中的资源,从内存中释放。延迟加载资源:意味着不用等待所有资源加载完毕,才显示场景。(快速切换场景,资源陆续在画面显示)普通图,子层为一张spriteFrame。创建方式:... 查看详情

用3dsmax7.0新建了一个简单的球体,怎么保存为一张jepg的图片

...等很多的,max功能强的很,慢慢学吧参考技术A3dsMax渲染存为一张JEPG的图片的方式:【F10】对话框--将【输出大小OutputSize】的值改为2000,1500(或2400,1800)。在【渲染输出RenderOutput】指定图片文件位置,在【保存类型】选择JPEGFile... 查看详情

cc.sprite如何绘制图片

参考技术Acc.sprite用于在CocosCreator中绘制图片,其步骤如下:1.在CocosCreator的资源管理器中创建一个Sprite(精灵)节点。2.选择“精灵”节点,然后在属性检查器中将其“纹理类型”设置为“图片”。3.选择“图片”纹理类型后,... 查看详情