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标志,对于被误用的纹理,还应设置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_SURFACE_FLAGS_MIPMAP标志(在 Dds.h 中定义)是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_CUBEMAP_NEGATIVEZ标志(在 Dds.h 中定义)是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 结构相同。

要求

要求
标头
Dds.h

另请参阅

DDS 参考