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
0x00000004
Der Puffer kann auf ein Fenster oder eine Geräteoberfläche zeichnen.
PFD_DRAW_TO_BITMAP
0x00000008
Der Puffer kann in eine Speicher-Bitmap zeichnen.
PFD_SUPPORT_GDI
0x00000010
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
0x00000020
Der Puffer unterstützt OpenGL-Zeichnung.
PFD_GENERIC_ACCELERATED
0x00001000
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
0x00000040
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
0x00000080
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
0x00000100
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
0x00000001
Der Puffer ist doppelt gepuffert. Dieses Flag und PFD_SUPPORT_GDI schließen sich in der aktuellen generischen Implementierung gegenseitig aus.
PFD_STEREO
0x00000002
Der Puffer ist stereoskopisch. Dieses Flag wird in der aktuellen generischen Implementierung nicht unterstützt.
PFD_SWAP_LAYER_BUFFERS
0x00000800
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
0x20000000
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
0x40000000
Das angeforderte Pixelformat kann entweder ein- oder doppelt gepuffert sein.
PFD_STEREO_DONTCARE
0x80000000
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
0x00000400
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
0x00000200
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
0
RGBA-Pixel. Jedes Pixel verfügt über vier Komponenten in dieser Reihenfolge: Rot, Grün, Blau und Alpha.
PFD_TYPE_COLORINDEX
1
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

Weitere Informationen

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

OpenGL unter Windows

SetPixelFormat

Strukturen