egret-docs-master/Engine2D/bitmapTexture/ktxfaq/README.md

38 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

## KTX 纹理压缩常见问题
#### 我使用的图片转换成 KTX 后在 iOS 手机上显示变形了
答:因为 iOS 使用的 ktx 是 PVRTC 格式的。PVRTC 必须是正方形边长为2的N次方如128、256、512`否则会强制转换成正方形,显示出来就变形了`。建议把资源打包成正方型的 SpriteSheet 纹理集后,再转换成 ktx 格式使用。
正方形纹理使用示例,[可以参考此Demo](http://tool.egret-labs.org/DocZip/engine/KTXSquare.zip)
![](p1.png)
#### 为什么图片转换成 KTX 后体积变大了?会占用更多的内存影响游戏性能吗?
##### 答:
* PVRTC 格式的 ktx因为会转换成正方形所以体积会变大。例如原图尺寸为 228x380 的图片,转换成 PVRTC 的 ktx 后,尺寸为 512x512
* ETC1 格式的 ktx因为会转换成纹理 ktx 和 alpha 通道 ktx所以体积会变大。
* 文件体积变大并不会占用更多的内存。ktx 是一种 GPU 能直接读取并显示的格式,使得图像无需解压即可进行渲染,节约大量的内存。
#### 原始资源加上转换后的 ktx 资源,包体变的很大怎么处理?
##### 答:
* 我们建议初始包体里只放普通的 png、jpg 图片,然后根据设备信息远程加载适合 该平台使用的 ktx 资源。
* 不过 ktx 文件体积大,远程加载资源的时候会慢一些,这个就需要开发者权衡资源加载时间和游戏性能之间的利弊了。
* 服务器可以开启 gzip ktx 压缩后的体积会很小。[或者直接把 ktx 打包成 zip 使用](http://tool.egret-labs.org/DocZip/engine/ktx/ktx_zip.zip)
#### etc1 的 ktx 和 png ,哪种格式的帧频更快?
png 在 shader 中调用一次 texture2D ,而 etc1 格式的 ktx 会多调用一次用于获取 alpha 遮罩,所以在 benchMark 极限测试下会有性能损失。[etc1 ktx 和 png 的帧频对比 benchmark](http://tool.egret-labs.org/DocZip/engine/ktx/KTX_VS_PNG.zip)
#### KTX 文件在 web 服务器上用什么 MIME 映射
KTX 是一种二进制格式MIME 设置成 `application/octet-stream
`
#### Egret 发布的原生游戏,是否支持 KTX
iOS 和 Android 的 Egret Naive 原生项目,都已经支持 KTX
#### 游戏的资源很多显存不够用了KTX 是否是唯一的解决方式:
答:请确保您已经在游戏中完善的进行了资源管理,例如使用 `RES.destroyRes()` 方法销毁不用的资源。如果显存还是过大,可以尝试使用 ktx。