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 Mipmapped 紋理中的必要專案。 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 Cube 對應的必要專案。 0x200
DDSCAPS2_CUBEMAP_POSITIVEX 當這些表面儲存在 Cube 對應中時需要。 0x400
DDSCAPS2_CUBEMAP_NEGATIVEX 當這些表面儲存在 Cube 對應中時需要。 0x800
DDSCAPS2_CUBEMAP_POSITIVEY 當這些表面儲存在 Cube 對應中時需要。 0x1000
DDSCAPS2_CUBEMAP_NEGATIVEY 當這些表面儲存在 Cube 對應中時需要。 0x2000
DDSCAPS2_CUBEMAP_POSITIVEZ 當這些表面儲存在 Cube 對應中時需要。 0x4000
DDSCAPS2_CUBEMAP_NEGATIVEZ 當這些表面儲存在 Cube 對應中時需要。 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 支援部分 Cube 對應,但 Direct3D 10、10.1 和 11 需要定義所有六個 Cube 對應臉部 (,您必須設定DDS_CUBEMAP_ALLFACES) 。

dwCaps3

類型: DWORD

未使用的。

dwCaps4

類型: DWORD

未使用的。

dwReserved2

類型: DWORD

未使用的。

備註

dwFlags 中包含包含有效資料之結構成員的旗標。

將此結構與 DDS_HEADER_DXT10 搭配使用,將資源陣列儲存在 DDS 檔案中。 如需詳細資訊,請參閱 紋理陣列

DDS_HEADER 與沒有 DirectDraw 相依性的 DirectDraw DDSURFACEDESC2 結構相同。

規格需求

需求
標頭
Dds.h

另請參閱

DDS 的參考