概述

之前写过一个关于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压缩格式的,也就是我们将图片转换成pvretc1后,还可以再压缩成gzip,最终还是可以正常解析出来。但由于文件大小小了很多,加载速度会变快。

要完成这样的构建流程,你可能需要用一个脚本来实现自动化,我比较推荐python,它的库实在太强大和方便了。

另外,并不是所有的图片都适合用压缩纹理,比如UI图片压缩后会有明显的锯齿,像场景, 特效这类就比较适合。总之,在使用压缩纹理之前,你可能需要对图片类型进行一些规范化。

creator中pvr使用呢相关推荐

  1. Cocos Creator中的动画支持技术

    Cocos Creator主要亮点 官方的权威描述是:Cocos Creator是以内容创作为核心的一体化游戏开发工具,这个引擎基于Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布. 本人使用 ...

  2. 如何在Qt Creator中导入图标资源

    本文主要描述如何在Qt Creator中创建资源文件,并的打入导入图标文件. 查看图标资源文件时,可以在项目的工程文件上鼠标单击右键-Open With-资源编辑器,效果如下图所示: 在项目的工程文件 ...

  3. linux qt自带例子无法,在Qt Creator中,错过了一些例子

    在Arch Linux中安装了Qt Creator 2.8 使用pacman安装qt5- *(*作为每个相关包) 存储库中没有示例,因此我使用了AUR,qt5示例中的示例 示例安装在/usr/shar ...

  4. cocos入门7:cocos creator 中的ui系统

    1.UI系统 一个完整的游戏一般由不同的系统组成.从技术的角度看一般会不包含UI系统.动画系统.物理系统和声音系统等.其中开发声音相关的内容在引擎的帮助下变得很简单. 对于目前市面上的手机游戏来说,特 ...

  5. Qt Creator中如何为某项目单独配置默认编码方式

    当我们有很多个Qt项目 有的采用UFT-8,而有的采用GBK时,采用普通的设置方式需要来回切换默认编码,很是浪费时间 其实Qt Creator是可以为某项目单独配置默认编码方式的 Qt Creator ...

  6. creator中矩阵究竟是如何参与坐标运算的

    本地矩阵和世界矩阵 显示节点CCNode,内部有一个变量,叫_trs,注意这个很重要,它主要存储了以下几个数据,我们在外部修改节点下面这些数据的时候,数据会优先存储到这个数组里,然后标记矩阵为脏,表示 ...

  7. 【Qt OpenGL】Qt Creator中的3D绘图及动画教程

    Qt Creator中的3D绘图及动画教程(参照NeHe) 刚刚学习了Qt Creator,发现Qt提供了QtOpenGL模块,对OpenGL做了不错的封装,这使得我们可以很轻松地在Qt程序中使用Op ...

  8. Qt Creator中的项目模板说明

    Qt Creator中的项目模板说明 项目 向导模板 用途 Application (Qt for MCU) MCU Support Application 创建一个应用程序,该应用程序使用Qt QM ...

  9. 【Y忍冬草】Qt中添加第三方插件VTK,Designer中有但Creator中没有

    版本:Qt5.8+VTK7.0 晕菜,之前在用Qt进行第三方插件VTK的时,不管是在Qt Creator中打开还是在Qt Designer中打开,都可以找到这个小东西,结果中间Qt出过一次问题,重新卸 ...

最新文章

  1. 2021年春季学期-信号与系统-第三次作业参考答案
  2. jQuery循环使用相同类的元素
  3. Ionic实战 自动升级APP(Android版)
  4. MaxCompute2.0性能评测:更强大、更高效之上的更快速
  5. 解决 IntelliJ IDEA 安装后界面消失,再次打开后界面不动
  6. mysql主库宕机能写吗_MYSQL主主切换(主库宕机)_MySQL
  7. 【RK3399Pro学习笔记】九、ROS客户端Client的编程实现
  8. 文献读的越多,离原创越远
  9. Mozilla 扩展漏洞奖励计划,涵盖利用缓解技术绕过
  10. ali arthas 火焰图_阿里巴巴 Arthas 3.1.5版本支持火焰图,快速定位应用热点
  11. 前端验证码绘制(canvas)
  12. leetcode 9. 回文数(python)
  13. 机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏
  14. 洛谷oj---1036 选数
  15. 错误码应该如何设计?
  16. 穿越计算机的迷雾--读书笔记三
  17. android 脚本录制工具,安卓自动化脚本录制工具
  18. 华为首次自曝“天才少年”成果:入职不到一年就干成这件大事,网友:值200万年薪!| 留言送书...
  19. 009 二维随机变量分布 min max 习题
  20. 使用beeline不能truncate table表

热门文章

  1. 电竞耳机推荐什么牌子好?黑科技加持HyperX夜鹰加强版,重新定义游戏电竞耳机
  2. 替换word文档中的换行符
  3. Springboot自动售货机后台管理系统源码带文档
  4. 搭建自己的git仓库之简单搭建本地git仓库和远程git仓库~
  5. Welcome to讯飞测试技术嘉年华和一只小萌鸭的约会
  6. 关系型数据库的语言分类
  7. 三国志战略版:如何巧妙应用形一阵?
  8. glibc源码编译安装
  9. 自动驾驶遥控泊车RPA系统功能规范
  10. 网页设计成品DW静态网页Html5响应式css3 ——响应式游戏网站(24页) HTML+CSS+JavaScript 关于制作网游网页主题论述