DDS_HEADER结构

描述 DDS 文件标头。

语法

typedef struct {
  DWORD           dwSize;
  DWORD           dwFlags;
  DWORD           dwHeight;
  DWORD           dwWidth;
  DWORD           dwPitchOrLinearSize;
  DWORD           dwDepth;
  DWORD           dwMipMapCount;
  DWORD           dwReserved1[11];
  DDS_PIXELFORMAT ddspf;
  DWORD           dwCaps;
  DWORD           dwCaps2;
  DWORD           dwCaps3;
  DWORD           dwCaps4;
  DWORD           dwReserved2;
} DDS_HEADER;

成员

dwSize

类型: DWORD

结构的大小。 此成员必须设置为 124。

dwFlags

类型: DWORD

用于指示哪些成员包含有效数据的标志。

标志 描述
DDSD_CAPS 每个 .dds 文件中都是必需的。 0x1
DDSD_HEIGHT 每个 .dds 文件中都是必需的。 0x2
DDSD_WIDTH 每个 .dds 文件中都是必需的。 0x4
DDSD_PITCH 为未压缩的纹理提供音调时是必需的。 0x8
DDSD_PIXELFORMAT 每个 .dds 文件中都是必需的。 0x1000
DDSD_MIPMAPCOUNT 在被误用的纹理中是必需的。 0x20000
DDSD_LINEARSIZE 为压缩纹理提供音调时是必需的。 0x80000
DDSD_DEPTH 深度纹理是必需的。 0x800000

注意

编写 .dds 文件时,应设置DDSD_CAPS和DDSD_PIXELFORMAT标志,对于 mipmapped 纹理,还应设置DDSD_MIPMAPCOUNT标志。 但是,读取 .dds 文件时,不应依赖于正在设置的DDSD_CAPS、DDSD_PIXELFORMAT和DDSD_MIPMAPCOUNT标志,因为此类文件的一些编写器可能不会设置这些标志。

在 Dds.h 中定义的DDS_HEADER_FLAGS_TEXTURE标志是DDSD_CAPS、DDSD_HEIGHT、DDSD_WIDTH和DDSD_PIXELFORMAT标志的按位 OR 组合。

在 Dds.h 中定义的DDS_HEADER_FLAGS_MIPMAP标志等于DDSD_MIPMAPCOUNT标志。

在 Dds.h 中定义的DDS_HEADER_FLAGS_VOLUME标志等于DDSD_DEPTH标志。

在 Dds.h 中定义的DDS_HEADER_FLAGS_PITCH标志等于DDSD_PITCH标志。

在 Dds.h 中定义的DDS_HEADER_FLAGS_LINEARSIZE标志等于DDSD_LINEARSIZE标志。

dwHeight

类型: DWORD

图面高度 ((以像素为单位)) 。

dwWidth

类型: DWORD

图面宽度 (像素) 。

dwPitchOrLinearSize

类型: DWORD

未压缩纹理中每个扫描行的间距或字节数;压缩纹理的顶级纹理中的字节总数。 有关如何计算音调的信息,请参阅 DDS 编程指南的 DDS 文件布局部分。

dwDepth

类型: DWORD

卷纹理的深度 (像素) ,否则未使用。

dwMipMapCount

类型: DWORD

mipmap 级别的数目,否则未使用。

dwReserved1[11]

类型: DWORD

未使用。

ddspf

类型: DDS_PIXELFORMAT

像素格式 (请参阅 DDS_PIXELFORMAT)

dwCaps

类型: DWORD

指定存储的图面的复杂性。

标志 描述
DDSCAPS_COMPLEX 可选;必须在包含多个图面 (mipmap、立方环境地图或 mipmapped 卷纹理) 的任何文件上使用。 0x8
DDSCAPS_MIPMAP 可选;应用于 mipmap。 0x400000
DDSCAPS_TEXTURE 必需 0x1000

注意

编写 .dds 文件时,应设置DDSCAPS_TEXTURE标志,对于多个图面,还应设置DDSCAPS_COMPLEX标志。 但是,读取 .dds 文件时,不应依赖于要设置的DDSCAPS_TEXTURE和DDSCAPS_COMPLEX标志,因为此类文件的一些编写器可能不会设置这些标志。

在 Dds.h 中定义的DDS_SURFACE_FLAGS_MIPMAP标志是DDSCAPS_COMPLEX和DDSCAPS_MIPMAP标志的按位 OR 组合。

在 Dds.h 中定义的DDS_SURFACE_FLAGS_TEXTURE标志等于DDSCAPS_TEXTURE标志。

在 Dds.h 中定义的DDS_SURFACE_FLAGS_CUBEMAP标志等于DDSCAPS_COMPLEX标志。

dwCaps2

类型: DWORD

有关存储图面的其他详细信息。

标志 描述
DDSCAPS2_CUBEMAP 多维数据集映射是必需的。 0x200
DDSCAPS2_CUBEMAP_POSITIVEX 当这些图面存储在多维数据集映射中时是必需的。 0x400
DDSCAPS2_CUBEMAP_NEGATIVEX 当这些图面存储在多维数据集映射中时是必需的。 0x800
DDSCAPS2_CUBEMAP_POSITIVEY 当这些图面存储在多维数据集映射中时是必需的。 0x1000
DDSCAPS2_CUBEMAP_NEGATIVEY 当这些图面存储在多维数据集映射中时是必需的。 0x2000
DDSCAPS2_CUBEMAP_POSITIVEZ 当这些图面存储在多维数据集映射中时是必需的。 0x4000
DDSCAPS2_CUBEMAP_NEGATIVEZ 当这些图面存储在多维数据集映射中时是必需的。 0x8000
DDSCAPS2_VOLUME 卷纹理是必需的。 0x200000

在 Dds.h 中定义的DDS_CUBEMAP_POSITIVEX标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_POSITIVEX标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_NEGATIVEX标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_NEGATIVEX标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_POSITIVEY标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_POSITIVEY标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_NEGATIVEY标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_NEGATIVEY标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_POSITIVEZ标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_POSITIVEZ标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_NEGATIVEZ标志是DDSCAPS2_CUBEMAP和DDSCAPS2_CUBEMAP_NEGATIVEZ标志的按位 OR 组合。

在 Dds.h 中定义的DDS_CUBEMAP_ALLFACES标志是DDS_CUBEMAP_POSITIVEX、DDS_CUBEMAP_NEGATIVEX、DDS_CUBEMAP_POSITIVEY、DDS_CUBEMAP_NEGATIVEY、DDS_CUBEMAP_POSITIVEZ和DDSCAPS2_CUBEMAP_NEGATIVEZ标志的按位 OR 组合。

在 Dds.h 中定义的DDS_FLAGS_VOLUME标志等于DDSCAPS2_VOLUME标志。

注意

尽管 Direct3D 9 支持部分多维数据集映射,但 Direct3D 10、10.1 和 11 要求定义所有六个多维数据集地图人脸 (即必须设置DDS_CUBEMAP_ALLFACES) 。

dwCaps3

类型: DWORD

未使用。

dwCaps4

类型: DWORD

未使用。

dwReserved2

类型: DWORD

未使用。

备注

包含包含有效数据的结构成员的 dwFlags 中的标志。

将此结构与 DDS_HEADER_DXT10 结合使用,将资源数组存储在 DDS 文件中。 有关详细信息,请参阅 纹理数组

DDS_HEADER 与没有 DirectDraw 依赖项的 DirectDraw DDSURFACEDESC2 结构相同。

要求

要求 Value
标头
Dds.h

另请参阅

DDS 参考