D3DFORMAT

Definiert die verschiedenen Arten von Oberflächenformaten.

typedef enum _D3DFORMAT {
    D3DFMT_UNKNOWN              =  0,

    D3DFMT_R8G8B8               = 20,
    D3DFMT_A8R8G8B8             = 21,
    D3DFMT_X8R8G8B8             = 22,
    D3DFMT_R5G6B5               = 23,
    D3DFMT_X1R5G5B5             = 24,
    D3DFMT_A1R5G5B5             = 25,
    D3DFMT_A4R4G4B4             = 26,
    D3DFMT_R3G3B2               = 27,
    D3DFMT_A8                   = 28,
    D3DFMT_A8R3G3B2             = 29,
    D3DFMT_X4R4G4B4             = 30,
    D3DFMT_A2B10G10R10          = 31,
    D3DFMT_A8B8G8R8             = 32,
    D3DFMT_X8B8G8R8             = 33,
    D3DFMT_G16R16               = 34,
    D3DFMT_A2R10G10B10          = 35,
    D3DFMT_A16B16G16R16         = 36,

    D3DFMT_A8P8                 = 40,
    D3DFMT_P8                   = 41,

    D3DFMT_L8                   = 50,
    D3DFMT_A8L8                 = 51,
    D3DFMT_A4L4                 = 52,

    D3DFMT_V8U8                 = 60,
    D3DFMT_L6V5U5               = 61,
    D3DFMT_X8L8V8U8             = 62,
    D3DFMT_Q8W8V8U8             = 63,
    D3DFMT_V16U16               = 64,
    D3DFMT_A2W10V10U10          = 67,

    D3DFMT_UYVY                 = MAKEFOURCC('U', 'Y', 'V', 'Y'),
    D3DFMT_R8G8_B8G8            = MAKEFOURCC('R', 'G', 'B', 'G'),
    D3DFMT_YUY2                 = MAKEFOURCC('Y', 'U', 'Y', '2'),
    D3DFMT_G8R8_G8B8            = MAKEFOURCC('G', 'R', 'G', 'B'),
    D3DFMT_DXT1                 = MAKEFOURCC('D', 'X', 'T', '1'),
    D3DFMT_DXT2                 = MAKEFOURCC('D', 'X', 'T', '2'),
    D3DFMT_DXT3                 = MAKEFOURCC('D', 'X', 'T', '3'),
    D3DFMT_DXT4                 = MAKEFOURCC('D', 'X', 'T', '4'),
    D3DFMT_DXT5                 = MAKEFOURCC('D', 'X', 'T', '5'),

    D3DFMT_D16_LOCKABLE         = 70,
    D3DFMT_D32                  = 71,
    D3DFMT_D15S1                = 73,
    D3DFMT_D24S8                = 75,
    D3DFMT_D24X8                = 77,
    D3DFMT_D24X4S4              = 79,
    D3DFMT_D16                  = 80,

    D3DFMT_D32F_LOCKABLE        = 82,
    D3DFMT_D24FS8               = 83,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_D32_LOCKABLE         = 84,
    D3DFMT_S8_LOCKABLE          = 85,
#endif // !D3D_DISABLE_9EX

    D3DFMT_L16                  = 81,

    D3DFMT_VERTEXDATA           =100,
    D3DFMT_INDEX16              =101,
    D3DFMT_INDEX32              =102,

    D3DFMT_Q16W16V16U16         =110,

    D3DFMT_MULTI2_ARGB8         = MAKEFOURCC('M','E','T','1'),

    D3DFMT_R16F                 = 111,
    D3DFMT_G16R16F              = 112,
    D3DFMT_A16B16G16R16F        = 113,

    D3DFMT_R32F                 = 114,
    D3DFMT_G32R32F              = 115,
    D3DFMT_A32B32G32R32F        = 116,

    D3DFMT_CxV8U8               = 117,

#if !defined(D3D_DISABLE_9EX)
    D3DFMT_A1                   = 118,
    D3DFMT_A2B10G10R10_XR_BIAS  = 119,
    D3DFMT_BINARYBUFFER         = 199,
#endif // !D3D_DISABLE_9EX

    D3DFMT_FORCE_DWORD          =0x7fffffff
} D3DFORMAT;

Bemerkungen

Es gibt mehrere Arten von Formaten:

Alle Formate werden von links nach rechts aufgeführt, am meisten signifikanten Bit bis zu kleinstem Bit. Beispielsweise wird D3DFORMAT_ARGB vom wichtigsten Bitkanal A (Alpha) bis zum kleinsten Bitkanal B (blau) sortiert. Beim Durchlaufen von Oberflächendaten werden die Daten im Arbeitsspeicher von am wenigsten signifikanten Bit bis zu den wichtigsten Bit gespeichert, was bedeutet, dass die Kanalreihenfolge im Arbeitsspeicher von mindestens signifikanten Bit (blau) bis zu den wichtigsten Bit (Alpha) liegt.

Der Standardwert für Formate, die nicht definierte Kanäle enthalten (G16R16, A8 usw.) ist 1. Die einzige Ausnahme ist das A8-Format, das für die drei Farbkanäle initialisiert wird.

Die Reihenfolge der Bits liegt zuerst aus dem wichtigsten Byte, sodass D3DFMT_A8L8 angibt, dass der hohe Byte dieses 2-Byte-Formats Alpha ist. D3DFMT_D16 gibt einen 16-Bit-Ganzzahlwert und eine anwendungssperrbare Oberfläche an.

Pixelformate wurden ausgewählt, um den Ausdruck von hardwarespezifischen Erweiterungsformaten zu ermöglichen, sowie die bewährte FOURCC-Methode einzuschließen. Der Satz von Formaten, die von der Direct3D-Laufzeit verstanden werden, wird von D3DFORMAT definiert.

Beachten Sie, dass Formate von unabhängigen Hardwareanbietern (IHVs) bereitgestellt werden und viele FOURCC-Codes nicht aufgeführt sind. Die Formate in dieser Enumeration sind eindeutig, dass sie von der Laufzeit sanktioniert werden, d. h., dass der Referenzrasterer auf allen diesen Typen ausgeführt wird. IHV-bereitgestellte Formate werden von den einzelnen IHVs auf einer Karten-by-Card-Basis unterstützt.

BackBuffer- oder Anzeigeformate

Diese Formate sind die einzigen gültigen Formate für einen Backpuffer oder eine Anzeige.

Format Zurückpuffer Anzeige
A2R10G10B10 w x (nur Vollbildmodus)
A8R8G8B8B8 w
X8R8G8B8B8 x x
A1R5G5B5B5 w
X1R5G5B5B5 x x
R5G6B5 x x

 

Pufferformate

Tiefen-, Schablonen-, Vertex- und Indexpuffer verfügen jeweils über eindeutige Formate.

Puffer-Flags Wert Format
D3DFMT_D16_LOCKABLE 70 16-Bit-Z-Puffer-Bittiefe.
D3DFMT_D32 71 32-Bit-Z-Puffer-Bittiefe.
D3DFMT_D15S1 73 16-Bit-Z-Puffer-Bittiefe, wobei 15 Bit für den Tiefenkanal reserviert sind und 1 Bit für den Schablonenkanal reserviert ist.
D3DFMT_D24S8 75 32-Bit-Z-Puffer-Bittiefe mit 24 Bit für den Tiefenkanal und 8 Bit für den Schablonenkanal.
D3DFMT_D24X8 77 32-Bit-Z-Puffer-Bittiefe mit 24 Bit für den Tiefenkanal.
D3DFMT_D24X4S4 79 32-Bit-Z-Puffer-Bittiefe mit 24 Bit für den Tiefenkanal und 4 Bit für den Schablonenkanal.
D3DFMT_D32F_LOCKABLE 82 Ein sperrbares Format, in dem der Tiefenwert als Standard-IEEE-Gleitkommanummer dargestellt wird.
D3DFMT_D24FS8 83 Ein nicht sperrbares Format, das 24 Bit tiefen (in einem 24-Bit-Gleitkommaformat - 20e4) und 8 Bit der Schablone enthält.
D3DFMT_D32_LOCKABLE 84 Ein sperrbarer 32-Bit-Tiefenpuffer. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Flag ist nur in Direct3D 9Ex verfügbar.
D3DFMT_S8_LOCKABLE 85 Ein sperrbarer 8-Bit-Schablonenpuffer. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Flag ist nur in Direct3D 9Ex verfügbar.
D3DFMT_D16 80 16-Bit-Z-Puffer-Bittiefe.
D3DFMT_VERTEXDATA 100 Beschreibt eine Vertexpufferoberfläche.
D3DFMT_INDEX16 101 16-Bit-Indexpuffer-Bittiefe.
D3DFMT_INDEX32 102 32-Bit-Indexpuffer-Bittiefe.

 

Alle Tiefenschablonenformate mit Ausnahme von D3DFMT_D16_LOCKABLE geben keine bestimmte Bitbestellung pro Pixel an, und der Treiber darf mehr als die angegebene Anzahl von Bits pro Tiefenkanal (aber nicht Schablonenkanal) verwenden.

DXTn komprimierte Texturformate

Diese Flags werden für komprimierte Texturen verwendet:

DXTn Komprimierte Texturen-Flags Wert Format
D3DFMT_DXT1 MAKEFOURCC('D', 'X', 'T', '1') DXT1-Komprimierungstextformat
D3DFMT_DXT2 MAKEFOURCC('D', 'X', 'T', '2') DXT2-Komprimierungstextformat
D3DFMT_DXT3 MAKEFOURCC('D', 'X', 'T', '3') DXT3-Komprimierungstextformat
D3DFMT_DXT4 MAKEFOURCC('D', 'X', 'T', '4') DXT4-Komprimierungstextformat
D3DFMT_DXT5 MAKEFOURCC('D', 'X', 'T', '5') DXT5-Komprimierungstextformat

 

Die Laufzeit ermöglicht es einer Anwendung nicht, eine Oberfläche mit einem DXTn-Format zu erstellen, es sei denn, die Oberflächendimensionen sind Mehrere von 4. Dies gilt für offscreen-einfache Oberflächen, Renderziele, 2D-Texturen, Cubetexturen und Volumentexturen.

Floating-Point Formate

Diese Flags werden für Gleitkommaoberflächenformate verwendet. Diese 16-Bit-Pro-Kanal-Formate werden auch als s10e5-Formate bezeichnet.

Gleitkomma-Flags Wert Format
D3DFMT_R16F 111 16-Bit-Float-Format mit 16 Bit für den roten Kanal.
D3DFMT_G16R16F 112 32-Bit-Float-Format mit 16 Bit für den roten Kanal und 16 Bit für den grünen Kanal.
D3DFMT_A16B16G16R16F 113 64-Bit-Float-Format mit 16 Bit für jeden Kanal (Alpha, Blau, Grün, Rot).

 

FOURCC-Formate

Daten in einem FOURCC-Format werden komprimiert.

MAKEFOURCC

Ein Makro zum Generieren von vier Zeichencodes folgt:

#define MAKEFOURCC(ch0, ch1, ch2, ch3)                              \
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |   \
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))

Hier sind die definierten FOURCC-Formate:

FOURCC-Flags Wert Format
D3DFMT_MULTI2_ARGB8 MAKEFOURCC('M','E','T','1') MultiElement-Textur (nicht komprimiert)
D3DFMT_G8R8_G8B8 MAKEFOURCC('G', 'R', 'G', 'B') Ein 16-Bit-gepacktes RGB-Format analog zu YUY2 (Y0U0, Y1V0, Y2U2 usw.). Es erfordert ein Pixelpaar, um den Farbwert ordnungsgemäß darzustellen. Das erste Pixel im Paar enthält 8 Bit grün (in den hohen 8 Bit) und 8 Bit rot (in den niedrigen 8 Bit). Das zweite Pixel enthält 8 Bit grün (in den hohen 8 Bit) und 8 Bit blau (in den niedrigen 8 Bit). Zusammen teilen die beiden Pixel die roten und blauen Komponenten, während jede eine eindeutige grüne Komponente hat (G0R0, G1B0, G2R2 usw.). Der Textur-Sampler normalisiert die Farben nicht beim Nachschlagen in einen Pixel-Shader; sie bleiben im Bereich von 0,0f bis 255.0f. Dies gilt für alle programmierbaren Pixel-Shadermodelle. Für den Fixfunktions-Pixel-Shader sollte die Hardware auf den Bereich 0,f bis 1.f normalisieren und im Wesentlichen als YUY2-Textur behandeln. Hardware, die dieses Format verfügbar macht, muss das PixelShader1xMaxValue-Element von D3DCAPS9 auf einen Wert festgelegt sein, der diesen Bereich behandeln kann.
D3DFMT_R8G8_B8G8 MAKEFOURCC('R', 'G', 'B', 'G', 'G') Ein 16-Bit-gepacktes RGB-Format analog zu UYVY (U0Y0, V0Y1, U2Y2 usw.). Es erfordert ein Pixelpaar, um den Farbwert ordnungsgemäß darzustellen. Das erste Pixel im Paar enthält 8 Bit grün (in den niedrigen 8 Bit) und 8 Bit rot (in den hohen 8 Bit). Das zweite Pixel enthält 8 Bit grün (in den niedrigen 8 Bit) und 8 Bit blau (in den hohen 8 Bit). Zusammen teilen die beiden Pixel die roten und blauen Komponenten, während jede eine eindeutige grüne Komponente hat (R0G0, B0G1, R2G2 usw.). Der Textur-Sampler normalisiert die Farben nicht beim Nachschlagen in einen Pixel-Shader; sie bleiben im Bereich von 0,0f bis 255.0f. Dies gilt für alle programmierbaren Pixel-Shadermodelle. Für den Fixfunktions-Pixel-Shader sollte die Hardware auf den Bereich 0,f bis 1.f normalisieren und im Wesentlichen als YUY2-Textur behandeln. Hardware, die dieses Format verfügbar macht, muss PixelShader1xMaxValue-Member von D3DCAPS9 auf einen Wert festgelegt sein, der diesen Bereich behandeln kann.
D3DFMT_UYVY MAKEFOURCC('U', 'Y', 'V', 'Y', 'Y') UYVY-Format (PC98 Compliance)
D3DFMT_YUY2 MAKEFOURCC('Y', 'U', 'Y', '2') YUY2-Format (PC98 Compliance)

 

IEEE-Formate

Diese Flags werden für Gleitkommaoberflächenformate verwendet. Diese 32-Bit-Pro-Kanal-Formate werden auch als s23e8-Formate bezeichnet.

Gleitkomma-Flags Wert Format
D3DFMT_R32F 114 32-Bit-Float-Format mit 32 Bit für den roten Kanal.
D3DFMT_G32R32F 115 64-Bit-Float-Format mit 32 Bit für den roten Kanal und 32 Bit für den grünen Kanal.
D3DFMT_A32B32G32R32F 116 128-Bit-Float-Format mit 32 Bit für jeden Kanal (Alpha, Blau, Grün, Rot).

 

Gemischte Formate

Daten in gemischten Formaten können eine Kombination aus nicht signierten Daten und signierten Daten enthalten.

Gemischte Format-Flags Wert Format
D3DFMT_L6V5U5 61 16-Bit-Stoßzuordnungsformat mit Luminance mit 6 Bit für die Luminanz und 5 Bit für v und Sie.
D3DFMT_X8L8V8U8 62 32-Bit-Stoßzuordnungsformat mit Luminance mit 8 Bit für jeden Kanal.
D3DFMT_A2W10V10U10 67 32-Bit-Stoßzuordnungsformat mit 2 Bit für Alpha und 10 Bit für w, v und Sie.

 

Signierte Formate

Daten in einem signierten Format können sowohl positiv als auch negativ sein. Signierte Formate verwenden Kombinationen von (U), (V), (W) und (Q)-Daten.

Signierte Format-Flags Wert Format
D3DFMT_V8U8 60 16-Bit-Stoßzuordnungsformat mit 8 Bit für Sie und v-Daten.
D3DFMT_Q8W8V8U8 63 32-Bit-Stoßzuordnungsformat mit 8 Bit für jeden Kanal.
D3DFMT_V16U16 64 32-Bit-Stoßzuordnungsformat mit 16 Bit für jeden Kanal.
D3DFMT_Q16W16V16U16 110 64-Bit-Stoßzuordnungsformat mit 16 Bit für jede Komponente.
D3DFMT_CxV8U8 117 16-Bit-Normalkomprimierungsformat. Der Textur-Sampler berechnet den C-Kanal von: C = sqrt(1 - U² - V²).

 

Nicht signierte Formate

Daten in einem nicht signierten Format müssen positiv sein. Nicht signierte Formate verwenden Kombinationen von (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance und (P)alette-Daten. Palettendaten werden auch als Farbindexdaten bezeichnet, da die Daten verwendet werden, um eine Farbpalette zu indizieren.

Nicht signierte Format-Flags Wert Format
D3DFMT_R8G8B8 20 24-Bit-RGB-Pixelformat mit 8 Bit pro Kanal.
D3DFMT_A8R8G8B8 21 32-Bit-ARGB-Pixelformat mit Alpha mit 8 Bit pro Kanal.
D3DFMT_X8R8G8B8 22 32-Bit-RGB-Pixelformat, wobei 8 Bit für jede Farbe reserviert sind.
D3DFMT_R5G6B5 23 16-Bit-RGB-Pixelformat mit 5 Bit für Rot, 6 Bit für Grün und 5 Bit für Blau.
D3DFMT_X1R5G5B5 24 16-Bit-Pixelformat, in dem 5 Bit für jede Farbe reserviert sind.
D3DFMT_A1R5G5B5 25 16-Bit-Pixelformat, bei dem 5 Bit für jede Farbe reserviert sind und 1 Bit für Alpha reserviert ist.
D3DFMT_A4R4G4B4 26 16-Bit-ARGB-Pixelformat mit 4 Bit für jeden Kanal.
D3DFMT_R3G3B2 27 8-Bit-RGB-Texturformat mit 3 Bit für Rot, 3 Bit für Grün und 2 Bit für Blau.
D3DFMT_A8 28 Nur 8-Bit-Alpha.
D3DFMT_A8R3G3B2 29 16-Bit-ARGB-Texturformat mit 8 Bit für Alpha, 3 Bit für Rot und Grün und 2 Bit für Blau.
D3DFMT_X4R4G4B4 30 16-Bit-RGB-Pixelformat mit 4 Bit für jede Farbe.
D3DFMT_A2B10G10R10 31 32-Bit-Pixelformat mit 10 Bit für jede Farbe und 2 Bit für Alpha.
D3DFMT_A8B8G8R8 32 32-Bit-ARGB-Pixelformat mit Alpha mit 8 Bit pro Kanal.
D3DFMT_X8B8G8R8 33 32-Bit-RGB-Pixelformat, wobei 8 Bit für jede Farbe reserviert sind.
D3DFMT_G16R16 34 32-Bit-Pixelformat mit 16 Bit für grün und rot.
D3DFMT_A2R10G10B10 35 32-Bit-Pixelformat mit 10 Bit für rot, grün und blau und 2 Bit für Alpha.
D3DFMT_A16B16G16R16 36 64-Bit-Pixelformat mit 16 Bit für jede Komponente.
D3DFMT_A8P8 40 8-Bit-Farbe mit 8 Bit Alpha indiziert.
D3DFMT_P8 41 8-Bit-Farbe indiziert.
D3DFMT_L8 50 Nur 8-Bit-Luminance.
D3DFMT_L16 81 Nur 16-Bit-Luminance.
D3DFMT_A8L8 51 16-Bit mit jeweils 8 Bit für Alpha und Luminance.
D3DFMT_A4L4 52 8-Bit mit jeweils 4 Bit für Alpha und Leuchtdichte.
D3DFMT_A1 118 1-Bit-Monochrom. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Kennzeichen ist nur in Direct3D 9Ex verfügbar.
D3DFMT_A2B10G10R10_XR_BIAS 119 2.8-voreingenommener Fixpunkt. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Kennzeichen ist nur in Direct3D 9Ex verfügbar.
D3DFMT_BINARYBUFFER 199 Binärformat, das angibt, dass die Daten keinen inhärenten Typ haben. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Kennzeichen ist nur in Direct3D 9Ex verfügbar.

 

Sonstiges

Dieses Kennzeichen wird für nicht definierte Formate verwendet.

Andere Flags Wert Format
D3DFMT_UNKNOWN 0 Das Surface-Format ist unbekannt.

 

Requirements (Anforderungen)

Anforderung Wert
Header
D3D9Types.h

Siehe auch

Direct3D-Enumerationen