2019年5月28日,白鹭引擎发布 5.2.20版本,在5.2.20版本中,2D渲染 – JavaScript和微信小游戏新增支持KTX纹理存储格式(KTX纹理说明见下文);同时,Egret Native更新至0.1.17版本,新增、修复,优化多项功能,推荐各位开发者更新体验。
KTX 纹理压缩使用说明
一、关于 KTX
KTX (Khronos Texture) 是一种纹理存储格式,大部分移动设备的 GPU 均支持这种格式。可以有效降低设备的显存占用,提高运行效率和稳定性。
如上图所示,第一步我们先把普通的 png\jpg 图片,转换成 ios 系统支持的 PVRTC 和安卓系统支持的 ETC1 格式的纹理。第二步再把纹理打包为 KTX 格式。
二、如何使用 KTX
http://tool.egret-labs.org/DocZip/engine/KTXHello.zip(KTX使用示例,复制链接到地址栏可下载)
上面是一个 HelloWorld 的示例项目,其中只把 egret_icon.png 这个图片转换为KTX 格式使用。
1、资源说明
在 resource/assets 目录下,egret_icon 有如下几种格式,引擎会根据不同平台来读取不同的格式:
egret_icon.png:PC 平台使用;
egret_icon.pvr.ktx:pvr 格式的 ktx,iOS 平台使用;
egret_icon.ktx(etc1 格式的颜色纹理) 和 egret_icon_alpha.ktx(alpha遮罩纹理):安卓平台使用。注:也可以把 2 个 ktx 文件合成一个文件,具体方法请参考高级教程。
2、代码说明
在 Main.ts 中的 loadResource 方法里,我们加了几行代码。
(1)、ignoreResource 方法表示只有 egret_icon.png 这个图片才会进入 ktx的使用流程,其他资源全部忽略;
(2)、CompressTextureProcessor 是加载资源的处理器,我们把它注册到了AssetsManager 资源管理器中。具体的处理逻辑,请看示例中的代码。
3、显示效果
为了更容易看出效果,我们把 egret_icon.png 换成了另外一张白鹭小鸟,而 ktx格式还是标准 HelloWorld 里的白鹭图标。
从上图中很容易看出,左侧是 PC 浏览器中的显示效果,因为不支持 ktx 格式,显示的是 png 图片。而右侧的 iOS 手机浏览器,因为支持 ktx 格式,显示的是pvr 纹理格式的图片。
Egret Native 0.1.17
[新增] 原生渲染支持自定义字体;
[新增] 支持更多的WebGLExtension: OES_texture_float、OES_standard_derivatives;
[优化] Android:带描边的加粗字体加粗不明显;
[优化] Android:按照Google Play白名单调整Android SDK接口调用方法;
[修正] 在打开原生显示列表时,位图字体时可能导致程序崩溃;
[修正] 加载完成的audio在cloneNode之后立即播放无效;
[修正] Android:屏幕弹出键盘时会自动弹回;
[修正] Android:不打开FPS面板时退出异常;
[修正] Android:和不支持ping pong的websocket服务器连接时会断线;
[修正] Android:华为Android8.1系统刘海屏高度支持;
[修正] iOS:单行输入框输入文字超过最大长度后不能自动左移;
[修正] iOS:多行输入框输入文字颜色不正确;
[修正] iOS:放大模式下正确识别屏幕分辨率;
[修正] iOS:post请求数据量过大引起崩溃。