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 aufgelistet, wobei das relevanteste Bit bis zum kleinsten Bit angezeigt wird. Beispielsweise wird D3DFORMAT_ARGB vom wichtigsten Bitkanal A (Alpha) bis zum geringstmöglichen Bitkanal B (blau) sortiert. Bei der Durchquerung von Oberflächendaten werden die Daten im Arbeitsspeicher vom geringsten bis zum bedeutendsten Bit gespeichert. Dies bedeutet, dass die Kanalreihenfolge im Arbeitsspeicher vom geringstmöglichen Bit (blau) zum bedeutendsten Bit (Alpha) reicht.

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 mit 000 initialisiert wird.

Die Reihenfolge der Bits geht zuerst vom bedeutendsten Byte aus, sodass D3DFMT_A8L8 angibt, dass das hohe Byte dieses 2-Byte-Formats Alpha ist. D3DFMT_D16 gibt einen 16-Bit-Ganzzahlwert und eine für die Anwendung gesperrte Oberfläche an.

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

Beachten Sie, dass Formate von unabhängigen Hardwareherstellern (IHVs) bereitgestellt werden und viele FOURCC-Codes nicht aufgeführt sind. Die Formate in dieser Enumeration sind insofern eindeutig, als sie von der Runtime sanktioniert werden, was bedeutet, dass der Verweisraster für alle diese Typen verwendet wird. IHV-bereitgestellte Formate werden von den einzelnen IHVs Karte-by-Karte-Basis unterstützt.

BackBuffer- oder Anzeigeformate

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

Format Hintergrundpuffer Anzeige
A2R10G10B10 x x (nur Vollbildmodus)
A8R8G8B8 x
X8R8G8B8 x x
A1R5G5B5 x
X1R5G5B5 x x
R5G6B5 x x

 

Pufferformate

Tiefen-, Schablonen-, Scheitelpunkt- und Indexpuffer weisen jeweils eindeutige Formate auf.

Pufferflags 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 und 1 Bit für den Schablonenkanal reserviert sind.
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, bei dem der Tiefenwert als IEEE-Standard-Gleitkommazahl dargestellt wird.
D3DFMT_D24FS8 83 Ein nicht sperrbares Format, das 24 Bit Tiefe (in einem 24-Bit-Gleitkommaformat – 20e4) und 8 Bit 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 Bittiefe des 16-Bit-Indexpuffers.
D3DFMT_INDEX32 102 32-Bit-Indexpuffer-Bittiefe.

 

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

DXTn-Formate für komprimierte Texturen

Diese Flags werden für komprimierte Texturen verwendet:

DXTn-Flags für komprimierte Textur Wert Format
D3DFMT_DXT1 MAKEFOURCC('D', 'X', 'T', '1') DXT1-Komprimierungstexturformat
D3DFMT_DXT2 MAKEFOURCC('D', 'X', 'T', '2') DXT2-Komprimierungstexturformat
D3DFMT_DXT3 MAKEFOURCC('D', 'X', 'T', '3') DXT3-Komprimierungstexturformat
D3DFMT_DXT4 MAKEFOURCC('D', 'X', 'T', '4') DXT4-Komprimierungstexturformat
D3DFMT_DXT5 MAKEFOURCC('D', 'X', 'T', '5') DXT5-Komprimierungstexturformat

 

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

Floating-Point Formate

Diese Flags werden für Gleitkommaflächenformate verwendet. Diese 16-Bits-pro-Kanal-Formate werden auch als s10e5-Formate bezeichnet.

Gleitkommaflags 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-Floatformat mit 16 Bit für jeden Kanal (Alpha, Blau, Grün, Rot).

 

FOURCC-Formate

Daten in einem FOURCC-Format sind komprimierte Daten.

MAKEFOURCC

Es folgt ein Makro zum Generieren von Vierzeichencodes:

#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-RGB-Format analog zu YUY2 (Y0U0, Y1V0, Y2U2 usw.). Es ist ein Pixelpaar erforderlich, um den Farbwert richtig darstellen zu können. Das erste Pixel in dem Paar enthält 8 Bits Grün (in den hohen 8 Bits) und 8 Bits Rot (in den niedrigen 8 Bits). Das zweite Pixel enthält 8 Bit grün (in den hohen 8 Bits) und 8 Bits Blau (in den niedrigen 8 Bits). Zusammen teilen sich die beiden Pixel die rote und blaue Komponente, während jede einzelne grüne Komponente (G0R0, G1B0, G2R2 usw.) aufweist. Der Textur-Sampler normalisiert die Farben nicht, wenn in einen Pixel-Shader nach oben geschaut wird. sie bleiben im Bereich von 0,0f bis 255,0f. Dies gilt für alle programmierbaren Pixel-Shadermodelle. Für den pixelfixierten Funktions-Shader sollte sich die Hardware auf den Bereich 0.f bis 1.f normalisieren und im Wesentlichen als YUY2-Textur behandeln. Bei Hardware, die dieses Format verfügbar macht, muss der PixelShader1xMaxValue-Member von D3DCAPS9 auf einen Wert festgelegt sein, der diesen Bereich verarbeiten kann.
D3DFMT_R8G8_B8G8 MAKEFOURCC('R', 'G', 'B', 'G') Ein 16-Bit-gepacktes RGB-Format analog zu UYVY (U0Y0, V0Y1, U2Y2 usw.). Es ist ein Pixelpaar erforderlich, um den Farbwert richtig darstellen zu können. Das erste Pixel in dem Paar enthält 8 Bits Grün (in den niedrigen 8 Bits) und 8 Bits Rot (in den hohen 8 Bits). Das zweite Pixel enthält 8 Bit Grün (in den niedrigen 8 Bits) und 8 Bits Blau (in den hohen 8 Bits). Zusammen teilen sich die beiden Pixel die rote und blaue Komponente, während jede einzelne grüne Komponente (R0G0, B0G1, R2G2 usw.) aufweist. Der Textur-Sampler normalisiert die Farben nicht, wenn in einen Pixel-Shader nach oben geschaut wird. sie bleiben im Bereich von 0,0f bis 255,0f. Dies gilt für alle programmierbaren Pixel-Shadermodelle. Für den pixelfixierten Funktions-Shader sollte sich die Hardware auf den Bereich 0.f bis 1.f normalisieren und im Wesentlichen als YUY2-Textur behandeln. Bei Hardware, die dieses Format verfügbar macht, muss das PixelShader1xMaxValue-Member von D3DCAPS9 auf einen Wert festgelegt sein, der diesen Bereich verarbeiten kann.
D3DFMT_UYVY MAKEFOURCC('U', 'Y', 'V', 'Y') UYVY-Format (PC98-Konformität)
D3DFMT_YUY2 MAKEFOURCC('Y', 'U', 'Y', '2') YUY2-Format (PC98-Konformität)

 

IEEE-Formate

Diese Flags werden für Gleitkommaflächenformate verwendet. Diese 32-Bits-pro-Kanal-Formate werden auch als s23e8-Formate bezeichnet.

Gleitkommaflags 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 unsignierten Daten und signierten Daten enthalten.

Flags für gemischte Formate Wert Format
D3DFMT_L6V5U5 61 16-Bit-Bump-Map-Format mit Leuchtdichte mit 6 Bit für Die Leuchtdichte und jeweils 5 Bit für v und Ihnen.
D3DFMT_X8L8V8U8 62 32-Bit-Bump-Map-Format mit Leuchtdichte mit 8 Bit für jeden Kanal.
D3DFMT_A2W10V10U10 67 32-Bit-Bump-Map-Format mit 2 Bit für Alpha und jeweils 10 Bit für w, v und Ihnen.

 

Signierte Formate

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

Flags für signiertes Format Wert Format
D3DFMT_V8U8 60 16-Bit-Bump-Map-Format mit jeweils 8 Bit für Sie und v-Daten.
D3DFMT_Q8W8V8U8 63 32-Bit-Bump-Map-Format mit 8 Bit für jeden Kanal.
D3DFMT_V16U16 64 32-Bit-Bump-Map-Format mit 16 Bit für jeden Kanal.
D3DFMT_Q16W16V16U16 110 64-Bit-Bump-Map-Format mit 16 Bit für jede Komponente.
D3DFMT_CxV8U8 117 Normales 16-Bit-Komprimierungsformat. Der Textur-Sampler berechnet den C-Kanal aus: C = sqrt(1 - U² - V²).

 

Nicht signierte Formate

Daten in einem format ohne Vorzeichen müssen positiv sein. Nicht signierte Formate verwenden Kombinationen von Daten (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance und (P)alette. Palettendaten werden auch als farbindizierte Daten bezeichnet, da die Daten zum Indizieren einer Farbpalette verwendet werden.

Flags für nicht signierte Formate 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, bei dem 8 Bits 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, bei dem 5 Bits für jede Farbe reserviert sind.
D3DFMT_A1R5G5B5 25 16-Bit-Pixelformat, bei dem 5 Bit für jede Farbe und 1 Bit für Alpha reserviert sind.
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, jeweils 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 Bits für Alpha.
D3DFMT_A8B8G8R8 32 32-Bit-ARGB-Pixelformat mit Alpha mit 8 Bit pro Kanal.
D3DFMT_X8B8G8R8 33 32-Bit-RGB-Pixelformat, bei dem 8 Bits für jede Farbe reserviert sind.
D3DFMT_G16R16 34 32-Bit-Pixelformat mit jeweils 16 Bit für Grün und Rot.
D3DFMT_A2R10G10B10 35 32-Bit-Pixelformat mit jeweils 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-Leuchtdichte.
D3DFMT_L16 81 Nur 16-Bit-Leuchtdichte.
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 Luminance.
D3DFMT_A1 118 1-Bit Monochrom. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Flag ist nur in Direct3D 9Ex verfügbar.
D3DFMT_A2B10G10R10_XR_BIAS 119 2,8-Bias-Fixpunkt. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Flag ist nur in Direct3D 9Ex verfügbar.
D3DFMT_BINARYBUFFER 199 Binärformat, das angibt, dass die Daten keinen inhärenten Typ aufweisen. Unterschiede zwischen Direct3D 9 und Direct3D 9Ex: Dieses Flag ist nur in Direct3D 9Ex verfügbar.

 

Sonstiges

Dieses Flag wird für nicht definierte Formate verwendet.

Andere Flags Wert Format
D3DFMT_UNKNOWN 0 Surface-Format ist unbekannt

 

Anforderungen

Anforderung Wert
Header
D3D9Types.h

Siehe auch

Direct3D-Enumerationen