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;
Member
dwSize
Gibt die Größe der DDPIXELFORMAT-Struktur in Byte an. Der Treiber muss diesen Member initialisieren, bevor die -Struktur verwendet wird.
Nur DirectX 9.0 und höhere Versionen. Gibt bei der Eingabe die Version der Microsoft DirectX-Runtime an, die von der Anwendung verwendet wird. Dieser Member ist auf DD_RUNTIME_VERSION festgelegt, der für DirectX 9.0 0x00000900 ist, im Formatmember der DD_GETFORMATDATA-Struktur für eine D3DGDI2_TYPE_GETFORMAT-Abfrage.
dwFlags
Gibt einen Satz von Flags an, die optionale Steuerelementflags angeben. Dieser Member ist ein bitweises OR mit einem der folgenden Werte:
Flag | Bedeutung |
---|---|
DDPF_ALPHA | Das Pixelformat beschreibt eine reine Alphaoberfläche. |
DDPF_ALPHAPIXELS | Die Oberfläche enthält Alphakanalinformationen im Pixelformat. |
DDPF_ALPHAPREMULT | Die Farbkomponenten im Pixel werden mit dem Alphawert im Pixel vorab multipliziert. Wenn dieses Flag 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 zum Zeitpunkt der Durchführung eines Alphamischungsvorgangs mit dem Alphawert multipliziert werden. |
DDPF_BUMPDUDV | Bump map dUdV-Daten im Pixelformat sind gültig. |
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 für Anwendungen nicht verfügbar gemacht. |
DDPF_FOURCC | Der FOURCC-Code ist gültig. |
DDPF_LUMINANCE | Leuchtdichtedaten im Pixelformat sind gültig. Verwenden Sie dieses Flag nur für Leuchtdichte- oder Luminanz-Plus-Alpha-Oberflächen. Die Bittiefe wird dann im dwLuminanceBitCount-Element angegeben. |
DDPF_LUMINANCEPIXELS | Leuchtdichtedaten im Pixelformat sind gültig. Verwenden Sie dieses Flag beim Hängen der Leuchtdichte, z. B. bumpmap-Oberflächen. Die Bitmaske für den Luminanzteil des Pixels wird dann im dwBumpLuminanceBitMask-Element angegeben. |
DDPF_NOVEL_TEXTURE_FORMAT | Gibt ein neues Oberflächenformat an, das die Runtime möglicherweise nicht für alle Anwendungen verfügbar macht. |
DDPF_PALETTEINDEXED1 | Die Oberfläche ist mit einer 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 besteht aus einer 1-, 2- oder 4-Bit-Farbe, die in eine 8-Bit-Palette indiziert ist. |
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 flag DDPF_RGB 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 Reine-Z-Puffer-Oberfläche. |
DDPF_ZPIXELS | Die Oberfläche hat das RGBZ-Format. |
dwFourCC
Gibt einen Oberflächenformatcode an, der einen der Codes im D3DFORMAT aufgezählten Typ enthält. Einige FOURCC-Codes sind Teil der D3DFORMAT. Weitere Informationen zu D3DFORMAT finden Sie in der SDK-Dokumentation. Hardwarehersteller 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 Bittiefe des Z-Puffers an (8, 16, 24 oder 32 Bit).
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
Maskierung für Alphakanal.
dwYUVAlphaBitMask
Maskierung für Alphakanal.
dwRGBZBitMask
Maskierung für Z-Kanal.
dwYUVZBitMask
Maskierung für Z-Kanal.
Hinweise
Die Runtime von DirectX 8.0 und höher erzwingt die folgenden Regeln für die Vorgangsliste (op):
Es ist nur eine Endianität (groß oder klein) für ein 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 16-Tb-Format enthalten (z. B. sollte sie nicht 5:5:5 und 5:6:5 aufzählen).
Eine Liste darf keine Alphaformate mit D3DFORMAT_OP_DISPLAYMODE oder D3DFORMAT_OP_3DACCELLERATION enthalten.
Das D3DFORMAT_OP_3DACCELLERATION-Flag kann nur festgelegt werden, wenn auch das D3DFORMAT_OP_DISPLAYMODE-Flag festgelegt ist.
Wenn der Treiber ein abschließbares D16 unterstützt, sollte er D3DFMT_D16_LOCKABLE in der Betriebsliste melden. Andernfalls sollte D3DFMT_D16 gemeldet werden.
Treiber, die Multisampling unterstützen, müssen die MultiSampleCaps in den Formaten Tiefe/Schablonen ausfüllen, für die Multisampling unterstützt werden kann. Dadurch kann die Runtime 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 Beschreibung der D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE-Obergrenze in den Rastercaps, die in der D3DCAPS8-Struktur in der SDK-Dokumentation enthalten sind.
Der in d3d8types.h definierte enumerierte Typ D3DMULTISAMPLE_TYPE wird beim Festlegen der Bits in wFlipMSTypes und wBltMSTypes verwendet. Um die Unterstützung für eine bestimmte Anzahl von Stichproben pro Pixel anzugeben, verschieben Sie einfach 1 logisch um den entsprechenden Wert aus dem D3DMULTISAMPLE_TYPE aufgezählten Typ kleiner 1 und ODER in das entsprechende Feld (wFlipMSTypes und wBltMSTypes).
Wenn der Treiber beispielsweise zwei und vier Stichproben pro Pixel beim Flipping (Vollbildmodus) und vier Stichproben pro Pixel beim Blitting (Fenstermodus) auf X8R8G8B8 Surface unterstützt, 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, bei Berichtsformaten 1 << (D3DMULTISAMPLE_NONE - 1) anzugeben. Es wird davon ausgegangen, dass jedes gemeldete Format auch ohne Multisampling verwendet werden kann. Wenn die Hardware multisample Rendering mit einem Z-Puffer unterstützt, sollten die gemeldeten Z-Pufferformate auch die unterstützten Stichproben pro Pixel enthalten.
Anforderungen
Anforderung | Wert |
---|---|
Header | ksmedia.h (einschließlich Ddraw.h) |