1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【300.Unity内存优化】ID-315-001:图片压缩格式详解及优化(1)原理篇之不同平台的压缩格式

【300.Unity内存优化】ID-315-001:图片压缩格式详解及优化(1)原理篇之不同平台的压缩格式

时间:2023-05-01 08:58:08

相关推荐

【300.Unity内存优化】ID-315-001:图片压缩格式详解及优化(1)原理篇之不同平台的压缩格式

unity图片压缩格式和内存计算

例子1:使用RGBA 32bit真彩(Truecolor),占用内存 = 4Bytes*512*512 = 1MB;

例子2:使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB

一、2的N次方大小的图片会得到引擎更大的支持,包括压缩比率,内存消耗,打包压缩大小,而且支持的力度非常大。

二、减小图片的占用大小和内存方式有:图片大小变化(Maxsize),色彩位数变化(16位,32位),压缩(PVRC)。

三、U3D对于图片的格式是自己生成的,而并不是你给他什么格式,他就用什么格式,一张1024*1024图在无压缩格式下,它会被U3D以无压缩文件形式存放,也就是说U3D里的Texture Preview里显示的占用大小**MB不只是内存占用大小,还是空间占用大小

U3D的内部机制为自动生成图片类型来替换我们给的图片,在图片的压缩方式上需要进行谨慎的选择。

压缩格式在U3D的Component Reference里有介绍我就不再详细介绍,只介绍几个重点的:

RGBA32格式为无压缩最保真格式,但也是最浪费内存和空间的格式。Automatic Turecolor和它一个意思。

RGBA16格式为无压缩16位格式,比32位节省一半的空间和内存。Automatic 16bits和它一个意思。

2.总结

(1)图片格式描述

图片文件的存储格式:用于图片文件的存储和传输,通常在磁盘文件,内存以及网络传输中使用。

常用的图像文件格式有BMP,TGA,GIF,JPG(有损不透明),PNG(无损透明)等;

(2)纹理格式描述

显卡能够直接进行采样的纹理数据的格式:是向显卡中加载纹理时使用的数据格式。

常用的纹理格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8, A8R8G8B8等。

占用空间:R5G6B5,A4R4G4B4,A1R5G5B5每个像素占用2个字节(BYTE),R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用4个字节。

RGBA Compressed PVRTC 4bits格式为PVRTC图片格式,它相当于把图片更改了压缩方式新生成了一个图片来替换原来的我们给的图片格式(比如我们给的是PNG格式)。

注意:U3D所有图片的压缩格式都会以另一种方式来存储,不会以你给的方式来存储,只有你指定了某种格式,它才会转成你要的格式。而且压缩格式在Android里并不一定有效,因为Android的机型多,GPU的渲染

unity图片压缩格式和内存计算

例子1:使用RGBA 32bit真彩(Truecolor),占用内存 = 4Bytes*512*512 = 1MB;

例子2:使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB

一、2的N次方大小的图片会得到引擎更大的支持,包括压缩比率,内存消耗,打包压缩大小,而且支持的力度非常大。

二、减小图片的占用大小和内存方式有:图片大小变化(Maxsize),色彩位数变化(16位,32位),压缩(PVRC)。

三、U3D对于图片的格式是自己生成的,而并不是你给他什么格式,他就用什么格式,一张1024*1024图在无压缩格式下,它会被U3D以无压缩文件形式存放,也就是说U3D里的Texture Preview里显示的占用大小**MB不只是内存占用大小,还是空间占用大小

U3D的内部机制为自动生成图片类型来替换我们给的图片,在图片的压缩方式上需要进行谨慎的选择。

压缩格式在U3D的Component Reference里有介绍我就不再详细介绍,只介绍几个重点的:

RGBA32格式为无压缩最保真格式,但也是最浪费内存和空间的格式。Automatic Turecolor和它一个意思。

RGBA16格式为无压缩16位格式,比32位节省一半的空间和内存。Automatic 16bits和它一个意思。

2.总结

(1)图片格式描述

图片文件的存储格式:用于图片文件的存储和传输,通常在磁盘文件,内存以及网络传输中使用。

常用的图像文件格式有BMP,TGA,GIF,JPG(有损不透明),PNG(无损透明)等;

(2)纹理格式描述

显卡能够直接进行采样的纹理数据的格式:是向显卡中加载纹理时使用的数据格式。

常用的纹理格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8, A8R8G8B8等。

占用空间:R5G6B5,A4R4G4B4,A1R5G5B5每个像素占用2个字节(BYTE),R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用4个字节。

RGBA Compressed PVRTC 4bits格式为PVRTC图片格式,它相当于把图片更改了压缩方式新生成了一个图片来替换原来的我们给的图片格式(比如我们给的是PNG格式)。

注意:U3D所

unity图片压缩格式和内存计算

例子1:使用RGBA 32bit真彩(Truecolor),占用内存 = 4Bytes*512*512 = 1MB;

例子2:使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB

一、2的N次方大小的图片会得到引擎更大的支持,包括压缩比率,内存消耗,打包压缩大小,而且支持的力度非常大。

二、减小图片的占用大小和内存方式有:图片大小变化(Maxsize),色彩位数变化(16位,32位),压缩(PVRC)。

三、U3D对于图片的格式是自己生成的,而并不是你给他什么格式,他就用什么格式,一张1024*1024图在无压缩格式下,它会被U3D以无压缩文件形式存放,也就是说U3D里的Texture Preview里显示的占用大小**MB不只是内存占用大小,还是空间占用大小

U3D的内部机制为自动生成图片类型来替换我们给的图片,在图片的压缩方式上需要进行谨慎的选择。

压缩格式在U3D的Component Reference里有介绍我就不再详细介绍,只介绍几个重点的:

RGBA32格式为无压缩最保真格式,但也是最浪费内存和空间的格式。Automatic Turecolor和它一个意思。

RGBA16格式为无压缩16位格式,比32位节省一半的空间和内存。Automatic 16bits和它一个意思。

2.总结

(1)图片格式描述

图片文件的存储格式:用于图片文件的存储和传输,通常在磁盘文件,内存以及网络传输中使用。

常用的图像文件格式有BMP,TGA,GIF,JPG(有损不透明),PNG(无损透明)等;

(2)纹理格式描述

显卡能够直接进行采样的纹理数据的格式:是向显卡中加载纹理时使用的数据格式。

常用的纹理格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8, A8R8G8B8等。

占用空间:R5G6B5,A4R4G4B4,A1R5G5B5每个像素占用2个字节(BYTE),R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用4个字节。

RGBA Compressed PVRTC 4bits格式为PVRTC图片格式,它相当于把图片更改了压缩方式新生成了一个图片来替换原来的我们给的图片格式(比如我们给的是PNG格式)。

注意:U3D所有图片的压缩格式都会以另一种方式来存储,不会以你给的方式来存储,只有你指定了某种格式,它才会转成你要的格式。而且压缩格式在Android里并不一定有效,因为Android的机型多,GPU的渲染方式也不一样,有的是Nvidia,有的是PowerVR,最最好的在安卓机子上启用RGBA16方式,因为这个是适应所有机型的,并且比32位占用量少一半,但也需要因项目而异,只是推荐使用的格式,可以多用,但要权衡内存和显示效果。

例如:对于一个512 * 512大小的纹理,如果使用R5G6B5的纹理格式,其大小为512 * 512 * 2 = 512KB, 用A8R8G8B8, 就是1M,可以预见,游戏中占用容量最大将是各种纹理,很容易导致游戏安装包突破上G,为了缩小纹理格式的数据占用的内存大小,对应的压缩纹理格式产生了。注意,这不是在移动游戏出现后才产生的,早在PC端游戏时代就有压缩纹理格式。

(3)压缩纹理格式

<0>移动GPU的四大厂商

<1>基于OpenGL ES的压缩纹理格式

ETC1(Ericsson texture compression)

不支持透明通道,所以仅能用于不透明纹理,OpenGL2.0支持

这种压缩纹理格式是OpenGL ES的图形标准,被所有的android设备支持,不支持透明通道,每个像素0.5个字节

ETC2

针对ETC1不支持透明通道的改进,用ETC2可以支持透明通道,不过要求OpenGL ES3.0及以上(Android4.3+),目前基本覆盖率在9成以上

PVRTC(PowerVR texture compression)

支持GPU为PowerVR SGX系列,基本的压缩参数有:

RGB_PVRTC_4Bit, RGB, 每个像素0.5个字节

RGB_PVRTC_2Bit, RGB, 每个像素0.25个字节

RGBA_PVRTC_4Bit, RGBA, 每个像素0.5个字节

ATITC(ATI texture compression)

支持GPU为Qualcomm的Adreno系列, 基本的压缩参数有:

ATC_RGB_AMD, RGB, 每个像素0.5字节

ATC_RGBA_EXPLICIT_ALPHA_AMD, RGBA, 每个像素1个字节

ATC_RGBA_INTERPOLATED_ALPHA_AMD, RGBA, 每个像素1个字节

ASTC

目前各大厂商主推的压缩纹理格式,压缩质量高,压缩块方案多,代价是压缩时间长(需要不断尝试压缩结果,算法决定)

DXTC(又名S3TC,S3 texture compression)

是一种有损纹理压缩算法,可以说DXT是目前应用最广泛的纹理压缩格式,可以认为所有的PC端显卡都支持DXT压缩。在多数纹理压缩选择中都是最佳方案,几乎可以认为是PC下的标准压缩格式。

基本的压缩参数有:

RGB_S3TC_DXT1, RGB, 每个像素0.5个字节

RGBA_S3TC_DXT1, RGBA, 每个像素0.5个字节

RGBA_S3TC_DXT3, RGBA, 每个像素1个字节

RGBA_S3TC_DXT5, RGBA,每个像素1个字节

<2>Unity纹理格式总结

导入设置

纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下规则 :

减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。

使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式(PVRCT 或 ETC)采用 POT 纹理尺寸。

制作纹理图集 :将多个纹理放置到单个纹理中,可以减少绘制调用和加快渲染速度。使用 Unity 精灵图集 或第三方 Texture Packer 可以制作纹理图集。

关闭 Read/Write Enabled 选项 :如果启用,此选项在 CPU 和 GPU 可寻址内存中都会创建副本,纹理会占用双倍内存。大多数情况下,应保持此选项为禁用状态。如果要在运行时生成纹理,请通过 Texture2D.Apply 强制执行,并且传入设置为 true 的 makeNoLongerReadable。

禁用不必要的 Mip Map :对于在屏幕上大小保持不变的纹理(如 2D 精灵和 UI 图形),Mip Map 不是必需的,对于与摄像机的距离会变化的 3D 模型,请保留 Mip Map为启用状态。

理解并合理设置压缩格式

有图片的压缩格式都会以另一种方式来存储,不会以你给的方式来存储,只有你指定了某种格式,它才会转成你要的格式。而且压缩格式在Android里并不一定有效,因为Android的机型多,GPU的渲染方式也不一样,有的是Nvidia,有的是PowerVR,最最好的在安卓机子上启用RGBA16方式,因为这个是适应所有机型的,并且比32位占用量少一半,但也需要因项目而异,只是推荐使用的格式,可以多用,但要权衡内存和显示效果。

unity图片压缩格式和内存计算

例子1:使用RGBA 32bit真彩(Truecolor),占用内存 = 4Bytes*512*512 = 1MB;

例子2:使用RGB ETC 4bit压缩,占用内存 = 0.5Bytes*512*512 = 128KB

一、2的N次方大小的图片会得到引擎更大的支持,包括压缩比率,内存消耗,打包压缩大小,而且支持的力度非常大。

二、减小图片的占用大小和内存方式有:图片大小变化(Maxsize),色彩位数变化(16位,32位),压缩(PVRC)。

三、U3D对于图片的格式是自己生成的,而并不是你给他什么格式,他就用什么格式,一张1024*1024图在无压缩格式下,它会被U3D以无压缩文件形式存放,也就是说U3D里的Texture Preview里显示的占用大小**MB不只是内存占用大小,还是空间占用大小

U3D的内部机制为自动生成图片类型来替换我们给的图片,在图片的压缩方式上需要进行谨慎的选择。

压缩格式在U3D的Component Reference里有介绍我就不再详细介绍,只介绍几个重点的:

RGBA32格式为无压缩最保真格式,但也是最浪费内存和空间的格式。Automatic Turecolor和它一个意思。

RGBA16格式为无压缩16位格式,比32位节省一半的空间和内存。Automatic 16bits和它一个意思。

2.总结

(1)图片格式描述

图片文件的存储格式:用于图片文件的存储和传输,通常在磁盘文件,内存以及网络传输中使用。

常用的图像文件格式有BMP,TGA,GIF,JPG(有损不透明),PNG(无损透明)等;

(2)纹理格式描述

显卡能够直接进行采样的纹理数据的格式:是向显卡中加载纹理时使用的数据格式。

常用的纹理格式有R5G6B5,A4R4G4B4,A1R5G5B5,R8G8B8, A8R8G8B8等。

占用空间:R5G6B5,A4R4G4B4,A1R5G5B5每个像素占用2个字节(BYTE),R8G8B8每个像素占用3个字节,A8R8G8B8每个像素占用4个字节。

RGBA Compressed PVRTC 4bits格式为PVRTC图片格式,它相当于把图片更改了压缩方式新生成了一个图片来替换原来的我们给的图片格式(比如我们给的是PNG格式)。

注意:U3D所有图片的压缩格式都会以另一种方式来存储,不会以你给的方式来存储,只有你指定了某种格式,它才会转成你要的格式。而且压缩格式在Android里并不一定有效,因为Android的机型多,GPU的渲染方式也不一样,有的是Nvidia,有的是PowerVR,最最好的在安卓机子上启用RGBA16方式,因为这个是适应所有机型的,并且比32位占用量少一半,但也需要因项目而异,只是推荐使用的格式,可以多用,但要权衡内存和显示效果。

例如:对于一个512 * 512大小的纹理,如果使用R5G6B5的纹理格式,其大小为512 * 512 * 2 = 512KB, 用A8R8G8B8, 就是1M,可以预见,游戏中占用容量最大将是各种纹理,很容易导致游戏安装包突破上G,为了缩小纹理格式的数据占用的内存大小,对应的压缩纹理格式产生了。注意,这不是在移动游戏出现后才产生的,早在PC端游戏时代就有压缩纹理格式。

(3)压缩纹理格式

<0>移动GPU的四大厂商

<1>基于OpenGL ES的压缩纹理格式

ETC1(Ericsson texture compression)

不支持透明通道,所以仅能用于不透明纹理,OpenGL2.0支持

这种压缩纹理格式是OpenGL ES的图形标准,被所有的android设备支持,不支持透明通道,每个像素0.5个字节

ETC2

针对ETC1不支持透明通道的改进,用ETC2可以支持透明通道,不过要求OpenGL ES3.0及以上(Android4.3+),目前基本覆盖率在9成以上

PVRTC(PowerVR texture compression)

支持GPU为PowerVR SGX系列,基本的压缩参数有:

RGB_PVRTC_4Bit, RGB, 每个像素0.5个字节

RGB_PVRTC_2Bit, RGB, 每个像素0.25个字节

RGBA_PVRTC_4Bit, RGBA, 每个像素0.5个字节

ATITC(ATI texture compression)

支持GPU为Qualcomm的Adreno系列, 基本的压缩参数有:

ATC_RGB_AMD, RGB, 每个像素0.5字节

ATC_RGBA_EXPLICIT_ALPHA_AMD, RGBA, 每个像素1个字节

ATC_RGBA_INTERPOLATED_ALPHA_AMD, RGBA, 每个像素1个字节

ASTC

目前各大厂商主推的压缩纹理格式,压缩质量高,压缩块方案多,代价是压缩时间长(需要不断尝试压缩结果,算法决定)

DXTC(又名S3TC,S3 texture compression)

是一种有损纹理压缩算法,可以说DXT是目前应用最广泛的纹理压缩格式,可以认为所有的PC端显卡都支持DXT压缩。在多数纹理压缩选择中都是最佳方案,几乎可以认为是PC下的标准压缩格式。

基本的压缩参数有:

RGB_S3TC_DXT1, RGB, 每个像素0.5个字节

RGBA_S3TC_DXT1, RGBA, 每个像素0.5个字节

RGBA_S3TC_DXT3, RGBA, 每个像素1个字节

RGBA_S3TC_DXT5, RGBA,每个像素1个字节

<2>Unity纹理格式总结

导入设置

纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下规则 :

减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。

使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式(PVRCT 或 ETC)采用 POT 纹理尺寸。

制作纹理图集 :将多个纹理放置到单个纹理中,可以减少绘制调用和加快渲染速度。使用 Unity 精灵图集 或第三方 Texture Packer 可以制作纹理图集。

关闭 Read/Write Enabled 选项 :如果启用,此选项在 CPU 和 GPU 可寻址内存中都会创建副本,纹理会占用双倍内存。大多数情况下,应保持此选项为禁用状态。如果要在运行时生成纹理,请通过 Texture2D.Apply 强制执行,并且传入设置为 true 的 makeNoLongerReadable。

禁用不必要的 Mip Map :对于在屏幕上大小保持不变的纹理(如 2D 精灵和 UI 图形),Mip Map 不是必需的,对于与摄像机的距离会变化的 3D 模型,请保留 Mip Map为启用状态。

理解并合理设置压缩格式

例如:对于一个512 * 512大小的纹理,如果使用R5G6B5的纹理格式,其大小为512 * 512 * 2 = 512KB, 用A8R8G8B8, 就是1M,可以预见,游戏中占用容量最大将是各种纹理,很容易导致游戏安装包突破上G,为了缩小纹理格式的数据占用的内存大小,对应的压缩纹理格式产生了。注意,这不是在移动游戏出现后才产生的,早在PC端游戏时代就有压缩纹理格式。

(3)压缩纹理格式

<0>移动GPU的四大厂商

<1>基于OpenGL ES的压缩纹理格式

ETC1(Ericsson texture compression)

不支持透明通道,所以仅能用于不透明纹理,OpenGL2.0支持

这种压缩纹理格式是OpenGL ES的图形标准,被所有的android设备支持,不支持透明通道,每个像素0.5个字节

ETC2

针对ETC1不支持透明通道的改进,用ETC2可以支持透明通道,不过要求OpenGL ES3.0及以上(Android4.3+),目前基本覆盖率在9成以上

PVRTC(PowerVR texture compression)

支持GPU为PowerVR SGX系列,基本的压缩参数有:

RGB_PVRTC_4Bit, RGB, 每个像素0.5个字节

RGB_PVRTC_2Bit, RGB, 每个像素0.25个字节

RGBA_PVRTC_4Bit, RGBA, 每个像素0.5个字节

ATITC(ATI texture compression)

支持GPU为Qualcomm的Adreno系列, 基本的压缩参数有:

ATC_RGB_AMD, RGB, 每个像素0.5字节

ATC_RGBA_EXPLICIT_ALPHA_AMD, RGBA, 每个像素1个字节

ATC_RGBA_INTERPOLATED_ALPHA_AMD, RGBA, 每个像素1个字节

ASTC

目前各大厂商主推的压缩纹理格式,压缩质量高,压缩块方案多,代价是压缩时间长(需要不断尝试压缩结果,算法决定)

DXTC(又名S3TC,S3 texture compression)

是一种有损纹理压缩算法,可以说DXT是目前应用最广泛的纹理压缩格式,可以认为所有的PC端显卡都支持DXT压缩。在多数纹理压缩选择中都是最佳方案,几乎可以认为是PC下的标准压缩格式。

基本的压缩参数有:

RGB_S3TC_DXT1, RGB, 每个像素0.5个字节

RGBA_S3TC_DXT1, RGBA, 每个像素0.5个字节

RGBA_S3TC_DXT3, RGBA, 每个像素1个字节

RGBA_S3TC_DXT5, RGBA,每个像素1个字节

<2>Unity纹理格式总结

导入设置

纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下规则 :

减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。

使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式(PVRCT 或 ETC)采用 POT 纹理尺寸。

制作纹理图集 :将多个纹理放置到单个纹理中,可以减少绘制调用和加快渲染速度。使用 Unity 精灵图集 或第三方 Texture Packer 可以制作纹理图集。

关闭 Read/Write Enabled 选项 :如果启用,此选项在 CPU 和 GPU 可寻址内存中都会创建副本,纹理会占用双倍内存。大多数情况下,应保持此选项为禁用状态。如果要在运行时生成纹理,请通过 Texture2D.Apply 强制执行,并且传入设置为 true 的 makeNoLongerReadable。

禁用不必要的 Mip Map :对于在屏幕上大小保持不变的纹理(如 2D 精灵和 UI 图形),Mip Map 不是必需的,对于与摄像机的距离会变化的 3D 模型,请保留 Mip Map为启用状态。

理解并合理设置压缩格式

方式也不一样,有的是Nvidia,有的是PowerVR,最最好的在安卓机子上启用RGBA16方式,因为这个是适应所有机型的,并且比32位占用量少一半,但也需要因项目而异,只是推荐使用的格式,可以多用,但要权衡内存和显示效果。

例如:对于一个512 * 512大小的纹理,如果使用R5G6B5的纹理格式,其大小为512 * 512 * 2 = 512KB, 用A8R8G8B8, 就是1M,可以预见,游戏中占用容量最大将是各种纹理,很容易导致游戏安装包突破上G,为了缩小纹理格式的数据占用的内存大小,对应的压缩纹理格式产生了。注意,这不是在移动游戏出现后才产生的,早在PC端游戏时代就有压缩纹理格式。

(3)压缩纹理格式

<0>移动GPU的四大厂商

<1>基于OpenGL ES的压缩纹理格式

ETC1(Ericsson texture compression)

不支持透明通道,所以仅能用于不透明纹理,OpenGL2.0支持

这种压缩纹理格式是OpenGL ES的图形标准,被所有的android设备支持,不支持透明通道,每个像素0.5个字节

ETC2

针对ETC1不支持透明通道的改进,用ETC2可以支持透明通道,不过要求OpenGL ES3.0及以上(Android4.3+),目前基本覆盖率在9成以上

PVRTC(PowerVR texture compression)

支持GPU为PowerVR SGX系列,基本的压缩参数有:

RGB_PVRTC_4Bit, RGB, 每个像素0.5个字节

RGB_PVRTC_2Bit, RGB, 每个像素0.25个字节

RGBA_PVRTC_4Bit, RGBA, 每个像素0.5个字节

ATITC(ATI texture compression)

支持GPU为Qualcomm的Adreno系列, 基本的压缩参数有:

ATC_RGB_AMD, RGB, 每个像素0.5字节

ATC_RGBA_EXPLICIT_ALPHA_AMD, RGBA, 每个像素1个字节

ATC_RGBA_INTERPOLATED_ALPHA_AMD, RGBA, 每个像素1个字节

ASTC

目前各大厂商主推的压缩纹理格式,压缩质量高,压缩块方案多,代价是压缩时间长(需要不断尝试压缩结果,算法决定)

DXTC(又名S3TC,S3 texture compression)

是一种有损纹理压缩算法,可以说DXT是目前应用最广泛的纹理压缩格式,可以认为所有的PC端显卡都支持DXT压缩。在多数纹理压缩选择中都是最佳方案,几乎可以认为是PC下的标准压缩格式。

基本的压缩参数有:

RGB_S3TC_DXT1, RGB, 每个像素0.5个字节

RGBA_S3TC_DXT1, RGBA, 每个像素0.5个字节

RGBA_S3TC_DXT3, RGBA, 每个像素1个字节

RGBA_S3TC_DXT5, RGBA,每个像素1个字节

<2>Unity纹理格式总结

导入设置

纹理会占用大部分内存,因此,导入设置非常重要。通常,请遵循以下规则 :

减小 Max Size :使用能生成视觉上可接受的结果的最低设置。这种非破坏性方式,可以快速降低纹理内存。

使用 2 的幂 (POT) :Unity 要求移动端纹理压缩格式(PVRCT 或 ETC)采用 POT 纹理尺寸。

制作纹理图集 :将多个纹理放置到单个纹理中,可以减少绘制调用和加快渲染速度。使用 Unity 精灵图集 或第三方 Texture Packer 可以制作纹理图集。

关闭 Read/Write Enabled 选项 :如果启用,此选项在 CPU 和 GPU 可寻址内存中都会创建副本,纹理会占用双倍内存。大多数情况下,应保持此选项为禁用状态。如果要在运行时生成纹理,请通过 Texture2D.Apply 强制执行,并且传入设置为 true 的 makeNoLongerReadable。

禁用不必要的 Mip Map :对于在屏幕上大小保持不变的纹理(如 2D 精灵和 UI 图形),Mip Map 不是必需的,对于与摄像机的距离会变化的 3D 模型,请保留 Mip Map为启用状态。

理解并合理设置压缩格式

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。