Egret 2D 5.2.20版本发布 新增支持KTX纹理格式

2019-05-30 05:42发布

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请求数据量过大引起崩溃。

文章来源: https://www.toutiao.com/group/6696334583861871107/