PIXELFORMATDESCRIPTOR-Struktur (wingdi.h)
Die PIXELFORMATDESCRIPTOR-Struktur beschreibt das Pixelformat einer Zeichnungsoberfläche.
Syntax
typedef struct tagPIXELFORMATDESCRIPTOR {
WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
Member
nSize
Gibt die Größe dieser Datenstruktur an. Dieser Wert sollte auf sizeof(PIXELFORMATDESCRIPTOR) festgelegt werden.
nVersion
Gibt die Version dieser Datenstruktur an. Dieser Wert sollte auf 1 festgelegt werden.
dwFlags
Eine Reihe von Bitflags, die Eigenschaften des Pixelpuffers angeben. Die Eigenschaften schließen sich im Allgemeinen nicht aus; Sie können eine beliebige Kombination von Bitflags festlegen, wobei die Ausnahmen beachtet werden. Die folgenden Bitflagskonstanten werden definiert.
Wert | Bedeutung |
---|---|
PFD_DRAW_TO_WINDOW
|
Der Puffer kann auf ein Fenster oder eine Geräteoberfläche zeichnen. |
PFD_DRAW_TO_BITMAP
|
Der Puffer kann in eine Speicher-Bitmap zeichnen. |
PFD_SUPPORT_GDI
|
Der Puffer unterstützt die GDI-Zeichnung. Dieses Flag und PFD_DOUBLEBUFFER schließen sich in der aktuellen generischen Implementierung gegenseitig aus. |
PFD_SUPPORT_OPENGL
|
Der Puffer unterstützt OpenGL-Zeichnung. |
PFD_GENERIC_ACCELERATED
|
Das Pixelformat wird von einem Gerätetreiber unterstützt, der die generische Implementierung beschleunigt. Wenn dieses Flag eindeutig ist und das flag PFD_GENERIC_FORMAT festgelegt ist, wird das Pixelformat nur von der generischen Implementierung unterstützt. |
PFD_GENERIC_FORMAT
|
Das Pixelformat wird von der GDI-Softwareimplementierung unterstützt, die auch als generische Implementierung bezeichnet wird. Wenn dieses Bit klar ist, wird das Pixelformat von einem Gerätetreiber oder einer Hardware unterstützt. |
PFD_NEED_PALETTE
|
Der Puffer verwendet RGBA-Pixel auf einem palettenverwalteten Gerät. Eine logische Palette ist erforderlich, um die besten Ergebnisse für diesen Pixeltyp zu erzielen. Farben in der Palette sollten gemäß den Werten der Elemente cRedBits, cRedShift, cGreenBits, cGreenShift, cGreenShift, cBluebits und cBlueShift angegeben werden. Die Palette sollte vor dem Aufrufen von wglMakeCurrent im Gerätekontext erstellt und realisiert werden. |
PFD_NEED_SYSTEM_PALETTE
|
Definiert in den Pixelformatdeskriptoren der Hardware, die nur eine Hardwarepalette im 256-Farbmodus unterstützt. Damit solche Systeme die Hardwarebeschleunigung verwenden können, muss sich die Hardwarepalette im RGBA-Modus in einer festen Reihenfolge (z. B. 3-3-2) befinden oder im Farbindexmodus mit der logischen Palette übereinstimmen. Wenn dieses Flag festgelegt ist, müssen Sie SetSystemPaletteUse in Ihrem Programm aufrufen, um eine 1:1-Zuordnung der logischen Palette und der Systempalette zu erzwingen. Wenn Ihre OpenGL-Hardware mehrere Hardwarepaletten unterstützt und der Gerätetreiber Ersatzhardwarepaletten für OpenGL zuordnen kann, ist dieses Flag in der Regel eindeutig.
Dieses Flag ist in den generischen Pixelformaten nicht festgelegt. |
PFD_DOUBLEBUFFER
|
Der Puffer ist doppelt gepuffert. Dieses Flag und PFD_SUPPORT_GDI schließen sich in der aktuellen generischen Implementierung gegenseitig aus. |
PFD_STEREO
|
Der Puffer ist stereoskopisch. Dieses Flag wird in der aktuellen generischen Implementierung nicht unterstützt. |
PFD_SWAP_LAYER_BUFFERS
|
Gibt an, ob ein Gerät einzelne Ebenen durch Pixelformate austauschen kann, die doppelt gepufferte Overlay- oder Unterlagenebenen enthalten. Andernfalls werden alle Ebenen als Gruppe ausgetauscht. Wenn dieses Flag festgelegt ist, wird wglSwapLayerBuffers unterstützt. |
Sie können die folgenden Bitflags angeben, wenn Sie ChoosePixelFormat aufrufen.
Wert | Bedeutung |
---|---|
PFD_DEPTH_DONTCARE
|
Das angeforderte Pixelformat kann entweder über einen Tiefenpuffer verfügen oder nicht. Um ein Pixelformat ohne Tiefenpuffer auszuwählen, müssen Sie dieses Flag angeben. Das angeforderte Pixelformat kann mit oder ohne Tiefenpuffer sein. Andernfalls werden nur Pixelformate mit einem Tiefenpuffer berücksichtigt. |
PFD_DOUBLEBUFFER_DONTCARE
|
Das angeforderte Pixelformat kann entweder ein- oder doppelt gepuffert sein. |
PFD_STEREO_DONTCARE
|
Das angeforderte Pixelformat kann entweder monoskopisch oder stereoskopisch sein. |
Mit der Erweiterungsfunktion glAddSwapHintRectWIN sind zwei neue Flags für die PIXELFORMATDESCRIPTOR-Pixelformatstruktur enthalten.
Wert | Bedeutung |
---|---|
PFD_SWAP_COPY
|
Gibt den Inhalt des Backpuffers in der doppelt gepufferten Standard Farbebene nach einem Pufferaustausch an. Durch das Austauschen der Farbpuffer wird der Inhalt des Backpuffers in den Frontpuffer kopiert. Der Inhalt des Backpuffers wird durch den Austausch nicht beeinflusst. PFD_SWAP_COPY ist nur ein Hinweis und wird möglicherweise nicht von einem Treiber bereitgestellt. |
PFD_SWAP_EXCHANGE
|
Gibt den Inhalt des Backpuffers in der doppelt gepufferten Standard Farbebene nach einem Pufferaustausch an. Durch den Austausch der Farbpuffer wird der Inhalt des Backpuffers mit dem Inhalt des Frontpuffers ausgetauscht. Nach dem Austausch enthält der Inhalt des Backpuffers den Inhalt des Frontpuffers vor dem Austausch. PFD_SWAP_EXCHANGE ist nur ein Hinweis und wird möglicherweise nicht von einem Treiber bereitgestellt. |
iPixelType
Gibt den Typ der Pixeldaten an. Die folgenden Typen werden definiert.
Wert | Bedeutung |
---|---|
PFD_TYPE_RGBA
|
RGBA-Pixel. Jedes Pixel verfügt über vier Komponenten in dieser Reihenfolge: Rot, Grün, Blau und Alpha. |
PFD_TYPE_COLORINDEX
|
Farbindexpixel. Jedes Pixel verwendet einen Farbindexwert. |
cColorBits
Gibt die Anzahl der Farbbitplanes in jedem Farbpuffer an. Bei RGBA-Pixeltypen ist dies die Größe des Farbpuffers, mit Ausnahme der Alphabitplanes. Bei Farbindexpixeln ist dies die Größe des Farbindexpuffers.
cRedBits
Gibt die Anzahl der roten Bitplanes in jedem RGBA-Farbpuffer an.
cRedShift
Gibt die Schichtanzahl für rote Bitplanes in jedem RGBA-Farbpuffer an.
cGreenBits
Gibt die Anzahl der grünen Bitplanes in jedem RGBA-Farbpuffer an.
cGreenShift
Gibt die Umschaltanzahl für grüne Bitplanes in jedem RGBA-Farbpuffer an.
cBlueBits
Gibt die Anzahl der blauen Bitplanes in jedem RGBA-Farbpuffer an.
cBlueShift
Gibt die Schichtanzahl für blaue Bitplanes in jedem RGBA-Farbpuffer an.
cAlphaBits
Gibt die Anzahl von Alphabitplanes in jedem RGBA-Farbpuffer an. Alpha-Bitplanes werden nicht unterstützt.
cAlphaShift
Gibt die Umschaltanzahl für Alphabitplanes in jedem RGBA-Farbpuffer an. Alpha-Bitplanes werden nicht unterstützt.
cAccumBits
Gibt die Gesamtzahl der Bitplanes im Akkumulationspuffer an.
cAccumRedBits
Gibt die Anzahl der roten Bitplanes im Akkumulationspuffer an.
cAccumGreenBits
Gibt die Anzahl der grünen Bitplanes im Akkumulationspuffer an.
cAccumBlueBits
Gibt die Anzahl der blauen Bitplanes im Akkumulationspuffer an.
cAccumAlphaBits
Gibt die Anzahl der Alphabitplanes im Akkumulationspuffer an.
cDepthBits
Gibt die Tiefe des Tiefenpuffers (Z-Achse) an.
cStencilBits
Gibt die Tiefe des Schablonenpuffers an.
cAuxBuffers
Gibt die Anzahl der Hilfspuffer an. Hilfspuffer werden nicht unterstützt.
iLayerType
Ignoriert. Frühere Implementierungen von OpenGL haben diesen Member verwendet, wird aber nicht mehr verwendet.
bReserved
Gibt die Anzahl der Überlagerungs- und Unterlageebenen an. Die Bits 0 bis 3 geben bis zu 15 Überlagerungsebenen an, und die Bits 4 bis 7 geben bis zu 15 Unterlageebenen an.
dwLayerMask
Ignoriert. Frühere Implementierungen von OpenGL haben diesen Member verwendet, wird aber nicht mehr verwendet.
dwVisibleMask
Gibt die transparente Farbe oder den Index einer Unterlageebene an. Wenn der Pixeltyp RGBA ist, ist dwVisibleMask ein transparenter RGB-Farbwert. Wenn der Pixeltyp farbindex ist, handelt es sich um einen transparenten Indexwert.
dwDamageMask
Ignoriert. Frühere Implementierungen von OpenGL haben diesen Member verwendet, wird aber nicht mehr verwendet.
Hinweise
Beachten Sie, wie oben dokumentiert, dass bestimmte Pixelformateigenschaften in der aktuellen generischen Implementierung nicht unterstützt werden. Die generische Implementierung ist die Microsoft GDI-Softwareimplementierung von OpenGL. Hardwarehersteller können Teile von OpenGL verbessern und möglicherweise einige Pixelformateigenschaften unterstützen, die von der generischen Implementierung nicht unterstützt werden.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | wingdi.h |