DDPIXELFORMAT-Struktur (ksmedia.h)
Die DDPIXELFORMAT- Struktur beschreibt das Pixelformat eines DirectDrawSurface--Objekts.
Syntax
typedef struct _DDPIXELFORMAT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwFourCC;
union {
DWORD dwRGBBitCount;
DWORD dwYUVBitCount;
DWORD dwZBufferBitDepth;
DWORD dwAlphaBitDepth;
};
union {
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union {
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union {
DWORD dwBBitMask;
DWORD dwVBitMask;
};
union {
DWORD dwRGBAlphaBitMask;
DWORD dwYUVAlphaBitMask;
DWORD dwRGBZBitMask;
DWORD dwYUVZBitMask;
};
} DDPIXELFORMAT, *LPDDPIXELFORMAT;
Angehörige
dwSize
Gibt die Größe in Byte der DDPIXELFORMAT-Struktur an. Der Treiber muss dieses Element initialisieren, bevor die Struktur verwendet wird.
Nur DirectX 9.0 und höhere Versionen. Gibt bei Eingabe die Version der Microsoft DirectX-Laufzeit an, die von der Anwendung verwendet wird. Dieses Element ist auf DD_RUNTIME_VERSION festgelegt, die für DirectX 9.0 im Format Element der DD_GETFORMATDATA-Struktur für eine D3DGDI2_TYPE_GETFORMAT Abfrage 0x00000900 ist.
dwFlags
Gibt einen Satz von Flags an, die optionale Steuerelementkennzeichnungen angeben. Dieses Element ist ein bitweiser ODER einer der folgenden Werte:
Flagge | Bedeutung |
---|---|
DDPF_ALPHA | Das Pixelformat beschreibt eine Nur-Alpha-Oberfläche. |
DDPF_ALPHAPIXELS | Die Oberfläche enthält Alphakanalinformationen im Pixelformat. |
DDPF_ALPHAPREMULT | Die Farbkomponenten im Pixel werden durch den Alphawert im Pixel prämultipliziert. Wenn dieses Kennzeichen festgelegt ist, muss auch das DDPF_ALPHAPIXELS Flag festgelegt werden. Wenn dieses Flag nicht festgelegt ist, aber das DDPF_ALPHAPIXELS Flag festgelegt ist, werden die Farbkomponenten im Pixelformat nicht durch Alpha vormultipliziert. In diesem Fall müssen die Farbkomponenten mit dem Alphawert multipliziert werden, wenn ein Alphamischungsvorgang ausgeführt wird. |
DDPF_BUMPDUDV | Bump map dUdV data in the pixel format is valid. |
DDPF_BUMPHEIGHT | Daten zur Höhe der Bumpmap im Pixelformat sind gültig. |
DDPF_COMPRESSED | Die Oberfläche akzeptiert Pixeldaten im angegebenen Format und komprimiert sie während des Schreibvorgangs. |
DDPF_D3DFORMAT | Gibt einen DirectX 8.0- und höher-Formatfunktionseintrag in der Texturformatliste an. Dieses Flag wird nicht für Anwendungen verfügbar gemacht. |
DDPF_FOURCC | Der FOURCC- Code ist gültig. |
DDPF_LUMINANCE | Die Leuchtdichtedaten im Pixelformat sind gültig. Verwenden Sie dieses Kennzeichen für Leuchtdichte- oder Leuchtdichte-plus-Alpha-Oberflächen; Die Bittiefe wird dann im dwLuminanceBitCount Member angegeben. |
DDPF_LUMINANCEPIXELS | Die Leuchtdichtedaten im Pixelformat sind gültig. Verwenden Sie dieses Kennzeichen, wenn die Leuchtdichte deaktiviert ist, z. B. Bumpmap-Oberflächen. The bitmask for the luminance portion of the pixel is then specified in the dwBumpLuminanceBitMask member. |
DDPF_NOVEL_TEXTURE_FORMAT | Gibt ein neues Oberflächenformat an, das von der Laufzeit möglicherweise nicht für alle Anwendungen verfügbar gemacht wird. |
DDPF_PALETTEINDEXED1 | Die Oberfläche ist 1-Bit-Farbe indiziert. |
DDPF_PALETTEINDEXED2 | Die Oberfläche ist 2-Bit-Farbe indiziert. |
DDPF_PALETTEINDEXED4 | Die Oberfläche ist 4-Bit-Farbe indiziert. |
DDPF_PALETTEINDEXED8 | Die Oberfläche ist 8-Bit-Farbe indiziert. |
DDPF_PALETTEINDEXEDTO8 | Die Oberfläche ist 1-, 2- oder 4-Bit-Farbe indiziert zu einer 8-Bit-Palette. |
DDPF_RGB | Die RGB-Daten in der Pixelformatstruktur sind gültig. |
DDPF_RGBTOYUV | Die Oberfläche akzeptiert RGB-Daten und übersetzt sie während des Schreibvorgangs in YUV-Daten. Das Format der zu schreibenden Daten ist in der Pixelformatstruktur enthalten. Das DDPF_RGB Flag ist festgelegt. |
DDPF_STENCILBUFFER | Die Oberfläche codiert Schablonen- und Tiefeninformationen in jedem Pixel des Z-Puffers. |
DDPF_YUV | Die YUV-Daten in der Pixelformatstruktur sind gültig. |
DDPF_ZBUFFER | Das Pixelformat beschreibt eine nur z-Puffer-Oberfläche. |
DDPF_ZPIXELS | Die Oberfläche ist im RGBZ-Format. |
dwFourCC
Gibt einen Oberflächenformatcode einschließlich eines der Codes im D3DFORMAT Aufzählungstyp an. Einige FOURCC- Codes sind Teil D3DFORMAT. Weitere Informationen zu D3DFORMAT finden Sie in der SDK-Dokumentation. Hardwareanbieter können auch Formatcodes definieren und bereitstellen, die für ihre Hardware spezifisch sind.
dwRGBBitCount
Gibt die Anzahl der RGB-Bits pro Pixel an (4, 8, 16, 24 oder 32).
dwYUVBitCount
Gibt die Anzahl der YUV-Bits pro Pixel an.
dwZBufferBitDepth
Gibt die Z-Puffer-Bittiefe (8, 16, 24 oder 32 Bit) an.
dwAlphaBitDepth
Gibt die Bittiefe des Alphakanals an.
dwRBitMask
Gibt die Maske für rote Bits an.
dwYBitMask
Gibt die Maske für Y-Bits an.
dwGBitMask
Gibt die Maske für grüne Bits an.
dwUBitMask
Gibt die Maske für U-Bits an.
dwBBitMask
Gibt die Maske für blaue Bits an.
dwVBitMask
Gibt die Maske für V-Bits an.
dwRGBAlphaBitMask
Maske für Alphakanal.
dwYUVAlphaBitMask
Maske für Alphakanal.
dwRGBZBitMask
Maske für Z-Kanal.
dwYUVZBitMask
Maske für Z-Kanal.
Bemerkungen
Die DirectX 8.0- und spätere Laufzeit legt die folgenden Regeln für die Vorgangsliste (op) fest:
Es ist nur eine Endian-Ness (groß oder klein) für jedes DS-Format zulässig, z. B. D15S1 oder S1D15, nicht beide unabhängig von anderen Bits.
Eine Liste sollte nur D3DFORMAT_OP_DISPLAYMODE für genau ein 16bpp-Format enthalten (z. B. sollte sie nicht 5:5:5 und 5:6:5 aufzählen).
Eine Liste darf keine Alphaformate enthalten, die D3DFORMAT_OP_DISPLAYMODE oder D3DFORMAT_OP_3DACCELLERATION festgelegt haben.
Das D3DFORMAT_OP_3DACCELLERATION-Flag kann nur festgelegt werden, wenn auch das D3DFORMAT_OP_DISPLAYMODE Flag festgelegt ist.
Wenn der Treiber einen sperrbaren D16 unterstützt, sollte er D3DFMT_D16_LOCKABLE in der Op-Liste melden; andernfalls sollte sie D3DFMT_D16 melden.
Treiber, die Multisampling unterstützen, müssen die MultiSampleCaps- in den Tiefen-/Schablonenformaten ausfüllen, für die Multisampling unterstützt werden kann. Dadurch kann die Laufzeit erkennen, ob ein Treiber Multisampling für Kombinationen von Renderziel- und Z-Pufferformaten unterstützt. Weitere Informationen zu den Einschränkungen im Zusammenhang mit stretch blt multisampling finden Sie in der SDK-Dokumentation in der Beschreibung der D3DCAPS8-Struktur von D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE Caps.
Der in d3d8types.h- definierte Enumerations D3DMULTISAMPLE_TYPE typ wird verwendet, wenn die Bits in wFlipMSTypes und wBltMSTypesfestgelegt werden. Um die Unterstützung für eine bestimmte Anzahl von Beispielen pro Pixel anzugeben, verschieben Sie einfach 1 um den entsprechenden Wert vom D3DMULTISAMPLE_TYPE Enumerationstyp kleiner 1 und OR in das entsprechende Feld (wFlipMSTypes und wBltMSTypes).
Wenn der Treiber z. B. sowohl zwei als auch vier Beispiele pro Pixel unterstützt, wenn der Flipping (Vollbildmodus) und vier Beispiele pro Pixel beim Schneiden (Fenstermodus) auf X8R8G8B8 Oberfläche wird der folgende Eintrag in der Liste des Oberflächenformats gemeldet.
DDPIXELFORMAT ddpf;
ZeroMemory(&ddpf, sizeof(ddpf));
ddpf.dwSize = sizeof(DDPIXELFORMAT);
ddpf.dwFlags = DDPF_D3DFORMAT;
ddpf.dwFourCC = D3DFMT_X8R8G8B8;
ddpf.dwOperations = D3DFORMAT_OP_DISPLAYMODE |
D3DFORMAT_OP_3DACCELERATION;
ddpf.MultiSampleCaps.wFlipMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1))
| (1 << (D3DMULTISAMPLE_2_SAMPLES âˆ' 1));
ddpf.MultiSampleCaps.wBltMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1));
Es ist nicht erforderlich, beim Berichtsformat 1 << (D3DMULTISAMPLE_NONE - 1) anzugeben. Es wird davon ausgegangen, dass jedes gemeldete Format auch ohne Multisampling verwendet werden kann. Wenn die Hardware das Multisamplerendering mit einem Z-Puffer unterstützt, sollten die gemeldeten Z-Pufferformate auch die unterstützten Beispiele pro Pixel enthalten.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ksmedia.h (einschließlich Ddraw.h) |