creator pvr etc
概述
之前写过一个关于2DMMO优化的分享,有些人问到其中的压缩纹理要怎么做。其实实施起来很简单,很多看过cocos2dx
的人都知道怎么做,这篇分享主要针对对这块不是太了解的新同学。
我假定对这篇分享有兴趣的同学都知道压缩纹理
是什么,有什么好处和坏处。如果不大了解,可以先看一下pvr, etc
相关的知识。
在手游中使用压缩纹理是很常见的需求,通常:
- IOS会使用PVR来压缩,IOS要求图片高宽必须是2的幂,且必须是正方形。
- Android会使用ETC1,由于ETC1不能支持透明通道,对于有透明的图,一般也会用ETC1+Alpha的做法。
使用工具
生成压缩纹理当然是使用现成的工具了:
IOS
使用PVRTexTool
,在这里下载29,具体的使用方法可能要参考工具的文档,下面是一个简单的例子:
PVRTexToolCLI -i $(infile) -o $(outfile) -square + -pot + -q pvrtcbest -f PVRTC1_4,UBN,lRGB
其中$(infile)
和$(outfile)
分别是原图片名和压缩后的图片名,如果图片没有透明,PVRTC1_4
换成PVRTC1_4_RGB
。
Android
使用Mali Texture Compression Tool
,在这里下载28,这个工具可以生成ETC1和带透明通道的ETC1
- # 原始格式
- etcpack ${infile} ${outfile} -c etc1
- # 带透明通道
- etcpack ${infile} ${outfile} -c etc1 -aa
带透明通道的ETC1其实就是将图片和遮罩合成一张图,最终的图片高度是原始图片的2倍。而要正确显示图片,则需要用Shader
把遮罩部分作为Alpha值加到原图上。Shader如下所示:
- attribute vec4 a_position;
- attribute vec2 a_texCoord;
- attribute vec4 a_color;
- varying vec4 v_fragmentColor;
- varying vec2 v_texCoord;
- varying vec2 v_alphaCoord;
- void main()
- {
- gl_Position = CC_PMatrix * a_position;
- v_fragmentColor = a_color;
- v_texCoord = a_texCoord;
- }
- precision lowp float;
- varying vec4 v_fragmentColor;
- varying vec2 v_texCoord;
- varying vec2 v_alphaCoord;
- void main()
- {
- vec4 v4Colour = texture2D(CC_Texture0, v_texCoord);
- v4Colour.a = texture2D(CC_Texture0, vec2(0.0, 0.5) + v_texCoord).r;
- gl_FragColor = v_fragmentColor * v4Colour;
- }
兼容Web和Native
现在知道如何生成和使用压缩纹理了,要怎么整合进Creator呢?
- 在开发阶段,我们还是正常使用png, jpg,这样在浏览器和模拟器都能正常显示。
- 在构建阶段,分成三步走:
- 用Creator命令行生成原生工程。
- 调用我们自己的脚本,将工程中的图片转成压缩纹理,但要注意转换后的图片名不要变,比如
a.jpg
转换后仍然叫a.jpg
,只不过内容已经是压缩纹理了。 - 用Creator命令行编译安装包。
这样打出来的包,在手机中是可以正常显示的,原因是cocos-2dx
并不是以文件后缀来判断类型的,它是根据文件内容的头几个字节来判断的。
而cocos-2dx
其实还支持gzip
压缩格式的,也就是我们将图片转换成pvr
或etc1
后,还可以再压缩成gzip
,最终还是可以正常解析出来。但由于文件大小小了很多,加载速度会变快。
要完成这样的构建流程,你可能需要用一个脚本来实现自动化,我比较推荐python
,它的库实在太强大和方便了。
另外,并不是所有的图片都适合用压缩纹理,比如UI图片压缩后会有明显的锯齿,像场景, 特效这类就比较适合。总之,在使用压缩纹理之前,你可能需要对图片类型进行一些规范化。
creator pvr etc相关推荐
- creator中pvr使用呢
概述 之前写过一个关于2DMMO优化的分享,有些人问到其中的压缩纹理要怎么做.其实实施起来很简单,很多看过cocos2dx的人都知道怎么做,这篇分享主要针对对这块不是太了解的新同学. 我假定对这篇分享 ...
- 得物技术Filament Creator材质编辑工具的实现
对于PBR材质来说,想要通过PBR属性还原真实的渲染效果,需要有一定的材质编辑能力.材质编辑工具通过提供实时编辑材质并且实时预览效果的能力,降低PBR材质编辑的门槛. 背景 在得物3D空间改用fila ...
- 最全的Creator游戏优化方案(一)
今天下午闲下来也来写写creator中的优化方案.欢迎各位拍砖,过程中会使用到一些别人的图片还请见谅! 1.加载速度优化 1.避免使用单像素的大图,尽量使用9宫方式进行拉升. 在我们加载的时候降低游戏 ...
- Cocos Creator 预制的使用模板(一般用于UI)
Cocos Creator里绑定properties @property(cc.Prefab)XXUIPrefab: cc.Prefab = null; 在预制上挂脚本 import { Consta ...
- Cocos Creator 的 动作(Action)系统:moveBy的使用
Cocos Creator 快速上手:制作第一个游戏 可以在这里感受一下这款游戏的完成形态: http://fbdemos.leanapp.cn/star-catcher/ 准备项目和资源 我们已经为 ...
- ubuntu kylin 18.04 安装 Qt Creator 5.11
首先,去官网(https://download.qt.io/official_releases/qt/ )下载Qt Creator的安装包. 我下载的是5.11.1版本文件:qt-opensource ...
- 【Qt】Qt Creator中文输入设置
#[Qt]Qt Creator中文输入设置 一.ubuntu中文输入法的设置 1.在终端中输入: $ ibus-setup 弹出界面如图: 2.选择中文输入法 3.点击右上角设置–>选择系统设置 ...
- cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
本文来自于"Cocos 荣耀讲师"征稿活动第1期,最先发表于 Cocos 中文社区,作者 ID:蟹老板,2017年加入社区,文章作品包括<猎头专家的开发历程>等. Co ...
- linux下QT Creator常见错误及解决办法
最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hel ...
- QT Creator 版本大全及下载地址
2019独角兽企业重金招聘Python工程师标准>>> 直接跳过输入账号,选择所需版本. 1.所有版本QT下载地址 : http://download.qt.io/archive/q ...
最新文章
- Transformer又出新变体∞-former:无限长期记忆,任意长度上下文
- FortiGate SSH管理认证问题安全公告
- php引用类失败,php – 致命错误:调用未定义的方法stdClass
- 处理被中断的系统调用
- 【杂谈】循序渐进,有三AI不得不看的技术综述(超过100篇核心干货)
- 一次失败的尝试,h5+Api 结合 react,webpack,同时生成android 、ios、h5端代码
- pytorch Dataset, DataLoader产生自定义的训练数据
- LuckyDraw app使用CosmosDB的成本分析
- 使用RxJava和SseEmitter进行服务器发送的事件
- 希尔排序 最坏时间_排序算法(2)
- [转帖]九句英语闯天下
- (day 32 - 位运算 )剑指 Offer 56 - I. 数组中数字出现的次数
- mysql blob 乱码_「数据库」MySQL高性能优化规范建议,速度收藏
- 计算机表格应用试题及答案,2016年职称计算机考试EXCEL练习试题及答案
- 读《我怎样设计飞机》
- 【Unity3D开发小游戏】《超级马里奥游戏》Unity开发教程
- matlab 与 mathmatica 编程对比(Vyi个人学习笔记)
- 在XP上同时运行IE6,IE7,IE8,IE9
- ardupilot/arduplane/attitude.cpp 姿态控制解析
- 计算机存储器组成结构,计算机组成原理——存储器内部组成