DDS 多维数据集映射示例
对于立方体环境映射,使用未压缩或压缩格式将多维数据集的一个或多个人脸写入文件,并且所有人脸的大小必须相同。 尽管所有人脸必须具有相同数量的 mipmap 级别,但每个人脸都可以定义 mipmap。 如果文件包含多维数据集映射,则应设置DDSCAPS_COMPLEX、DDSCAPS2_CUBEMAP以及一个或多个 DSCAPS2_CUBEMAP_POSITIVEX/Y/Z 和/或 DDSCAPS2_CUBEMAP_NEGATIVEX/Y/Z。 人脸按以下顺序写入:正 x、负 x、正 y、负 y、正 z、负 z,省略任何缺失人脸。 每个人脸都用其main图像写入,后跟任何 mipmap 级别。
例如,具有正 x、负 y 和正 z 面的 256 x 256 立方体贴图、DXT1 像素格式以及所有 mipmap 级别将包含以下内容:
DDS 组件 | # 字节数 |
---|---|
标头的值开始缓存响应 | 128 |
256 x 256 正 x main 图像 | 32768 |
128 x 128 正 x mipmap 图像 | 8192 |
64 x 64 正 x mipmap 图像 | 2048 |
32 x 32 正 x mipmap 图像 | 512 |
16 x 16 正 x mipmap 图像 | 128 |
8×8 正 x mipmap 图像 | 32 |
4 x 4 正 x mipmap 图像 | 8 |
2 x 2 正 x mipmap 图像 | 8 |
1 x mipmap 正图像 | 8 |
为 y mipmap 图像重复上述 9 层 | 43704 |
为 z mipmap 图像重复前面的 9 层 | 43704 |
从 DirectX 8 开始,立方体映射存储时定义了所有人脸。
DXGI 立方体映射
Direct3D 10.x 和 Direct3D 11 中的立方体环境贴图等效于包含 6 张图像的 2D 纹理数组,并且可以存储在 DDS 文件中。 借助 Direct3D 10.1 和 Direct3D 11,硬件还可以支持立方体贴图数组,这些数组本身就是 2D 纹理数组,其倍数为 6 张图像 (6、12、18、24 等) 。
例如,下面是一个 256 x 256 立方体贴图,其中 mipmap 级别以 BC6H 格式存储为 2D 纹理数组:
DDS 组件 | # 字节数 |
---|---|
标头 (“DX10”) 的 FourCC | 128 |
扩展标头 (DXGI 格式设置为 95 [DXGI_FORMAT_BC6H_UF16],维度值为 3 [D3Dxx_RESOURCE_DIMENSION_TEXTURE2D],数组大小为 6,杂项标志为 0x4 [D3Dxx_RESOURCE_MISC_TEXTURECUBE]) | 20 |
256 x 256 数组输入 0 (正 x) main 图像 | 65536 |
128 x 128 数组输入 0 (正 x) mipmap 图像 | 16384 |
64 x 64 数组输入 0 (正 x) mipmap 图像 | 4096 |
32 x 32 数组输入 0 (正 x) mipmap 图像 | 1024 |
16 x 16 数组输入 0 (正 x) mipmap 图像 | 256 |
8×8 数组输入 0 (正 x) mipmap 图像 | 64 |
4 x 4 数组输入 0 (正 x) mipmap 图像 | 16 |
2 x 2 数组输入 0 (正 x) mipmap 图像 | 16 |
1×1 数组条目 0 (正 x) mipmap 图像 | 16 |
对数组条目 1 (负 x) mipmap 图像重复上述 9 个层 | 87408 |
对数组条目 2 重复前面的 9 层 (正 y) mipmap 图像 | 87408 |
对数组条目 3 (负 y) mipmap 图像重复前 9 层 | 87408 |
对数组输入 4 (正 z) mipmap 图像重复上述 9 个层 | 87408 |
对数组条目 5 (负 z) mipmap 图像重复上述 9 个图层 | 87408 |
相关主题