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:
- BackBuffer- oder Anzeigeformate
- Pufferformate
- DXTn-Formate für komprimierte Texturen
- Gleitkommaformate
- FOURCC-Formate
- IEEE-Formate
- Gemischte Formate
- Signierte Formate
- Formate ohne Vorzeichen
- Andere
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 |
|
Siehe auch