15. 纹理尺寸是4的倍数

1. 纹理尺寸是4的倍数


1. 纹理尺寸是4的倍数

csharp 复制代码
1).内存对齐

计算机(CPU/GPU)读取内存时不是逐字节读取, 而是按固定"对齐块"(比如4字节、16 字节、64 字节)批量读取 ------ 这是硬

件层面的优化, 能大幅提升访问效率
csharp 复制代码
Unity在导入非4倍数纹理时, 即使现代GPU支持非对齐读取, 也会在内存中自动填充到最近的2的幂次尺寸(比如 127×127 

→ 128×128), 这一步本身就会增加导入时间和内存占用

csharp 复制代码
2).GPU 的纹理块(Tile)处理机制

GPU渲染纹理时, 会将纹理分割成固定大小的块(Tile)并行处理(常见块尺寸: 4×4、8×8、16×16), 这是GPU并行计算的核

心逻辑(每个SP流处理器处理一个块)

csharp 复制代码
3).纹理压缩格式

Unity常用的纹理压缩格式(ETC2、ASTC、PVRTC)"基于4×4块压缩/解压", 先把纹理图像分割成一个个「4×4 像素的独立小

方块(Block/Tile)」, 再以这个4 × 4块为最小压缩/解压单元------ 每个块单独编码(压缩)、单独解码(解压), GPU硬件也针

对4×4块的并行处理做了深度优化

csharp 复制代码
若纹理尺寸是4的倍数(如: 128 × 128): 整张纹理能被完整分割为4 × 4块(128 / 4 = 32, 即 32 × 32个4 × 4 块), 无

任何零碎块

若纹理尺寸非4的倍数(如: 127 × 127)最后一行 / 列会出现不完整的4 × 4块(比如 1×127、127×1), 压缩算法会先把纹

理填充到最近的4的倍数尺寸(128×128), 再分割块压缩; 解压后还要把填充的像素裁剪掉 ------ 多了填充 + 裁剪两步, 既浪

费存储空间, 又增加处理开销
相关推荐
Avalon7126 小时前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
ellis19707 小时前
Unity UI性能优化一之插件【Unity UI Optimization Tool】
unity·性能优化
Zik----10 小时前
Unity基础学习笔记(B站视频课整理)
unity·vr
郝学胜-神的一滴1 天前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
田鸡_1 天前
Unity新输入系统(Input System)教学篇
unity·游戏引擎·游戏程序
EQ-雪梨蛋花汤1 天前
【Unity笔记】Unity 音游模板与免费资源:高效构建节奏游戏开发全指南
笔记·unity·游戏引擎
星辰徐哥1 天前
Unity基础:游戏对象的激活与隐藏:SetActive方法详解
游戏·unity·lucene
微莱羽墨1 天前
零、0基础入门Unity 安装详细教程(2026最新版教程,安装Unity看这一篇就够了!)
unity·游戏引擎·unity安装
星辰徐哥1 天前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
nnsix1 天前
Unity 刚体的 默认力、瞬时力 区别
unity·游戏引擎