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), 再分割块压缩; 解压后还要把填充的像素裁剪掉 ------ 多了填充 + 裁剪两步, 既浪

费存储空间, 又增加处理开销
相关推荐
tealcwu1 天前
【Unity基础】为什么游戏需要物理按键映射?从 Unity Input Manager 到跨引擎输入设计
java·游戏·unity
tealcwu2 天前
【Unity高级】Unity URP:构建同时支持 2D 与 3D 场景的项目完全指南
3d·unity·游戏引擎
淡海水2 天前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc
小小数媒成员2 天前
UGUI原理(一)
开发语言·游戏·unity·游戏引擎
暴走约伯2 天前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
小小数媒成员2 天前
Unity UGUI布局组件(LayoutGroup、ContentSizeFitter、LayoutElement)详解
unity·游戏引擎
tealcwu2 天前
【Unity基础】Unity输入与Time.deltaTime的使用原则
unity·游戏引擎
郝学胜-神的一滴3 天前
AI 编程智能体 22:解析器赋能与实战落地全指南
人工智能·程序人生·游戏·unity·游戏引擎
BuHuaX3 天前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
peter67684 天前
unity2d游戏开发经验总结
unity