首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之IOS运行时合并PVRTC贴图(九十九)
2018
10-23

Unity3D研究院之IOS运行时合并PVRTC贴图(九十九)

游戏中一旦有换装功能,角色可能就会是多个DrawCall了,所以我们可以将部件的贴图动态合并在一张中,本文聊聊PVRTC2bit 和 PVRTC4bit 贴图合并的方法。先看看PVRTC贴图的排列方式。

Unity3D研究院之IOS运行时合并PVRTC贴图(九十九) - 雨松MOMO程序研究院 - 1

核心方式是Texture2D.GetRawTextureData()获取贴图的原始数据,运行时使用需要开启贴图的Read/Write,如果出于节省内存的考虑,可以在编辑模式下提前提取贴图的原始数据,运行期在合并。

我们将256和128的贴图合并在一张512的PVRTC贴图中,排列的位置如下。

Unity3D研究院之IOS运行时合并PVRTC贴图(九十九) - 雨松MOMO程序研究院 - 2代码中同时支持PVRTC2bit和PVRTC4bit,注意Apply()的第二个参数是true,表示合并贴图后立即删除内存拷贝,也就是Read/Write了。

iPhone 5SE 真机测试大概合并一张512的贴图需要1毫秒,如果游戏中适合一帧只显示一个角色,如果有建议或者意见欢迎在下面留言。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之IOS运行时合并PVRTC贴图(九十九)》有 4 条评论

  1. 海阳宋仲基 说:

    两张图叠加形成一张图,其中一张有透明像素,怎么完美叠加。

  2. 中年程序猿 说:

    雨松大大,请问带mipmap的贴图合并之后怎么保证mipmap还在呢?

留下一个回复

你的email不会被公开。