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 主图像 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 主图像 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 组件 # 字节数
标头(FourCC 设置为“DX10”) 128
扩展标头(DXGI 格式设置为DXGI_FORMAT_BC3_UNORM) 20
256 by-64 主图像 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 编程指南