U3D面试要点:贴图

Read/Write Enabled 逐像素可修改参数

用途:只有开启此项,才可以使用 Texture.GetPixel 接口,获取像素数据

弊端:内存中会保留一份内存的的拷贝,会占用双倍内存

 Generate Mipmap

用途: 类似LOD技术,会预先为纹理创建出一系列逐层缩小的备份图以此根据摄像机的远近来选用不同的图

弊端:会增加纹理内存,增加额外33%内存

 WrapMode纹理模式

Clamp 拉伸模式: 纹理采样时,在边缘处将会拉伸,这样不会存在边缘像素颜色缝隙

Repeat 重复模式:纹理采样时,会取相邻像素做差值计算而生成新的像素,所以存在明显的颜色缝隙

 FilterMode过滤模式

Point(no filter)点过滤模式:纹理像素成为近似块

Bilinear 双线性过滤模式:相邻像素做模糊处理

Trilinear三线性过滤模式:会在不同的Mipmap层次间做blur处理

纹理压缩 

基础计算 

 1字节 = 8bits

压缩格式 

RGBA 16bit:每个像素占16位,即2个字节,内存大小1024*1024*2 = 2M
RGBA 32bit:每个像素占32位,即4个字节,内存大小1024*1024*4 = 4M
Android:
[POT] RGB ETC1 4bit:

大小:每个像素占4位,即0.5个字节,内存大小1024*1024*0.5 = 0.5M

限制:长宽必须相等、且是2的整数次幂、不支持透明通道、OpenGL ES 2.0标准的一部分

[NPOT] RGBA ETC2 8bit(RGBA Crunched ETC2)

大小:每个像素占8位,即1个字节,内存大小1024*1024*1 = 1M    携带透明通道

限制:对半透支持很好,但是长宽必须被4整除、只支持OpenGL ES 3.0及以上的Android手机(大概2013年以后的手机都支持)、在不被支持的设备上则会内部自动转成 RGBA32/ARGB32,扩大内存占用

IOS
[POT] RGBA PVRTC 4bit:

大小:每个像素占4位,即0.5个字节,内存大小1024*1024*0.5 = 0.5M

限制:长宽必须相等、且是2的整数次幂、压缩效果比较差,尤其是有透明通道的UI几乎是无法接受的

[NPOT] RGBA ASTC 4*4

大小:每个像素占8位,即1个字节,内存大小1024*1024*1 = 1M  

限制:对半透支持很好,但是长宽必须被4整除(不符合规范的资源会在打包的时候,缺省回滚到32位不压缩的格式)、只支持苹果A8以后的设备Phone6及以上的机型,大概2014年后的手机都支持)

项目要求 

细则 

是否带Alpha

是:ETC2_RGBA8 / ASTC_RGBA_6X6

否:ETC2_RGB4 / ASTC_RGB_6x6

微调

高清UI纹理: 4x4

UI图集或角色3D纹理: 5x5

画质要求不高的粒子贴图: 6x6

工具

是否被4整除:tex.width%4 == 0 && tex.height%4 == 0

texWidth += (tex.width % 4 == 0) ? 0 : (4 - tex.width % 4)

texheight += (tex.height%4 == 0) ? 0 : (4 - tex.height % 4)

使用开源的 Freelmage.dll 第三方插件,重新创建新尺寸贴图

尺寸打图集约束相关

超过512不打图集

图集最大2048(4MB)        TexturelmporterPlatformSettings.maxTextureSize

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值