DDS 纹理示例

对于未压缩的纹理,请使用 DDSD_PITCH 和 DDPF_RGB 标志;对于压缩纹理,请使用 DDSD_LINEARSIZE 和 DDPF_FOURCC 标志。 对于误贴纹理,请使用 DDSD_MIPMAPCOUNT、DDSCAPS_MIPMAP、DDSCAPS_COMPLEX 标志以及 mipmap 计数成员。 如果生成 mipmap,通常会写入 1 乘 1 的所有级别。

对于压缩纹理,每个 mipmap 级别图像的大小通常为前一个图像大小的四分之一,至少为 8 (DXT1) 或 16 (DXT2-5) 字节, (方形纹理) 。 使用以下公式计算非方形纹理的每个级别的大小:

max(1, ( (width + 3) / 4 ) ) x max(1, ( (height + 3) / 4 ) ) x 8(DXT1) or 16(DXT2-5)

此表列出了每一层在不使用压缩的情况下为 256 by 256 R8G8B8 纹理占用的空间量。

DDS 组件 # 字节数
标头的值开始缓存响应 128
256 by-256 main图像 196608
128 by-128 mipmap 图像 49152
64 by 64 mipmap 图像 12288
32 by-32 mipmap 图像 3072
16-by-16 mipmap 图像 768
8 by-8 mipmap 图像 192
4 by-4 mipmap 图像 48
2 by-2 mipmap 图像 12
1-by-1 mipmap 图像 3

 

此表列出使用压缩 (DXT1) 每个层为同一纹理占用的空间量。

DDS 组件 # 字节数
标头的值开始缓存响应 128
256 by 64 main图像 8192
128 by-32 mipmap 图像 2048
64 by-16 mipmap 图像 512
32 by-8 mipmap 图像 128
16 by-4 mipmap 图像 32
8 by-2 mipmap 图像 16
4 by-1 mipmap 图像 8
2 by-1 mipmap 图像 8
1-by-1 mipmap 图像 8

 

此表列出了使用 DXGI 压缩格式 (每个层为同一纹理占用的空间量,在本例中BC3_UNORM) 因此需要扩展标头:

DDS 组件 # 字节数
header (FourCC 设置为“DX10”) 128
扩展标头 (DXGI 格式设置为 DXGI_FORMAT_BC3_UNORM) 20
256 by 64 main图像 16384
128 by-32 mipmap 图像 4096
64 by-16 mipmap 图像 1024
32 by-8 mipmap 图像 256
16 by-4 mipmap 图像 64
8 by-2 mipmap 图像 32
4 by-1 mipmap 图像 16
2 by-1 mipmap 图像 16
1-by-1 mipmap 图像 16

 

DDS 编程指南