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 |
相关主题