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 的 编程指南