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)