Partager via


Structure PIXELFORMATDESCRIPTOR (wingdi.h)

La structure PIXELFORMATDESCRIPTOR décrit le format de pixel d’une surface de dessin.

Syntaxe

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;

Membres

nSize

Spécifie la taille de cette structure de données. Cette valeur doit être définie sur sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Spécifie la version de cette structure de données. Cette valeur doit être définie sur 1.

dwFlags

Ensemble d’indicateurs de bits qui spécifient les propriétés de la mémoire tampon de pixels. Les propriétés ne s’excluent généralement pas mutuellement ; vous pouvez définir n’importe quelle combinaison d’indicateurs de bits, avec les exceptions notées. Les constantes d’indicateur de bits suivantes sont définies.

Valeur Signification
PFD_DRAW_TO_WINDOW
0x00000004
La mémoire tampon peut dessiner sur une fenêtre ou une surface d’appareil.
PFD_DRAW_TO_BITMAP
0x00000008
La mémoire tampon peut dessiner dans une bitmap de mémoire.
PFD_SUPPORT_GDI
0x00000010
La mémoire tampon prend en charge le dessin GDI. Cet indicateur et PFD_DOUBLEBUFFER s’excluent mutuellement dans l’implémentation générique actuelle.
PFD_SUPPORT_OPENGL
0x00000020
La mémoire tampon prend en charge le dessin OpenGL.
PFD_GENERIC_ACCELERATED
0x00001000
Le format de pixel est pris en charge par un pilote de périphérique qui accélère l’implémentation générique. Si cet indicateur est clair et que l’indicateur PFD_GENERIC_FORMAT est défini, le format de pixel est pris en charge par l’implémentation générique uniquement.
PFD_GENERIC_FORMAT
0x00000040
Le format de pixel est pris en charge par l’implémentation logicielle GDI, également appelée implémentation générique. Si ce bit est clair, le format de pixel est pris en charge par un pilote de périphérique ou un matériel.
PFD_NEED_PALETTE
0x00000080
La mémoire tampon utilise des pixels RVBA sur un appareil géré par palette. Une palette logique est nécessaire pour obtenir les meilleurs résultats pour ce type de pixel. Les couleurs de la palette doivent être spécifiées en fonction des valeurs des membres cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits et cBlueShift . La palette doit être créée et réalisée dans le contexte de l’appareil avant d’appeler wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE
0x00000100
Défini dans les descripteurs de format pixel du matériel qui prend en charge une palette de matériels en mode 256 couleurs uniquement. Pour que ces systèmes utilisent l’accélération matérielle, la palette matérielle doit être dans un ordre fixe (par exemple, 3-3-2) en mode RVBA ou doit correspondre à la palette logique en mode color-index. Lorsque cet indicateur est défini, vous devez appeler SetSystemPaletteUse dans votre programme pour forcer un mappage un-à-un de la palette logique et de la palette système. Si votre matériel OpenGL prend en charge plusieurs palettes matérielles et que le pilote de périphérique peut allouer des palettes de matériel de rechange pour OpenGL, cet indicateur est généralement clair.

Cet indicateur n’est pas défini dans les formats de pixels génériques.

PFD_DOUBLEBUFFER
0x00000001
La mémoire tampon est mise en mémoire tampon double. Cet indicateur et PFD_SUPPORT_GDI s’excluent mutuellement dans l’implémentation générique actuelle.
PFD_STEREO
0x00000002
La mémoire tampon est stéréoscopique. Cet indicateur n’est pas pris en charge dans l’implémentation générique actuelle.
PFD_SWAP_LAYER_BUFFERS
0x00000800
Indique si un appareil peut permuter des plans de couche individuels avec des formats de pixels qui incluent des plans superposés ou sous-jacents à double mise en mémoire tampon. Sinon, tous les plans de couche sont échangés ensemble en tant que groupe. Lorsque cet indicateur est défini, wglSwapLayerBuffers est pris en charge.
 

Vous pouvez spécifier les indicateurs de bits suivants lors de l’appel de ChoosePixelFormat.

Valeur Signification
PFD_DEPTH_DONTCARE
0x20000000
Le format de pixel demandé peut avoir ou non une mémoire tampon de profondeur. Pour sélectionner un format de pixel sans mémoire tampon de profondeur, vous devez spécifier cet indicateur. Le format de pixel demandé peut être avec ou sans mémoire tampon de profondeur. Sinon, seuls les formats de pixels avec une mémoire tampon de profondeur sont pris en compte.
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
Le format de pixel demandé peut être mis en mémoire tampon simple ou double.
PFD_STEREO_DONTCARE
0x80000000
Le format de pixel demandé peut être monoscopique ou stéréoscopique.
 

Avec la fonction d’extension glAddSwapHintRectWIN , deux nouveaux indicateurs sont inclus pour la structure de format de pixel PIXELFORMATDESCRIPTOR .

Valeur Signification
PFD_SWAP_COPY
0x00000400
Spécifie le contenu de la mémoire tampon d’arrière-plan dans le plan de couleurs main double mise en mémoire tampon après un échange de mémoire tampon. L’échange des tampons de couleurs entraîne la copie du contenu de la mémoire tampon d’arrière-plan vers la mémoire tampon avant. Le contenu de la mémoire tampon d’arrière-mémoire n’est pas affecté par l’échange. PFD_SWAP_COPY est un indicateur uniquement et peut ne pas être fourni par un pilote.
PFD_SWAP_EXCHANGE
0x00000200
Spécifie le contenu de la mémoire tampon d’arrière-plan dans le plan de couleurs main double mise en mémoire tampon après un échange de mémoire tampon. L’échange des tampons de couleurs entraîne l’échange du contenu de la mémoire tampon d’arrière-plan avec le contenu de la mémoire tampon avant. Après l’échange, le contenu de la mémoire tampon d’arrière-plan contient le contenu de la mémoire tampon avant l’échange. PFD_SWAP_EXCHANGE est un indicateur uniquement et peut ne pas être fourni par un pilote.

iPixelType

Spécifie le type de données de pixels. Les types suivants sont définis.

Valeur Signification
PFD_TYPE_RGBA
0
Pixels RVBA. Chaque pixel a quatre composants dans cet ordre : rouge, vert, bleu et alpha.
PFD_TYPE_COLORINDEX
1
Pixels d’index de couleur. Chaque pixel utilise une valeur d’index de couleur.

cColorBits

Spécifie le nombre de plans de bits de couleur dans chaque mémoire tampon de couleur. Pour les types de pixels RVBA, il s’agit de la taille de la mémoire tampon de couleurs, à l’exclusion des plans de bits alpha. Pour les pixels d’index de couleur, il s’agit de la taille de la mémoire tampon color-index.

cRedBits

Spécifie le nombre de plans de bits rouges dans chaque mémoire tampon de couleurs RVBA.

cRedShift

Spécifie le nombre de décalages pour les plans de bits rouges dans chaque mémoire tampon de couleurs RVBA.

cGreenBits

Spécifie le nombre de plans de bits verts dans chaque mémoire tampon de couleurs RVBA.

cGreenShift

Spécifie le nombre de décalages pour les plans de bits verts dans chaque mémoire tampon de couleurs RVBA.

cBlueBits

Spécifie le nombre de plans de bits bleus dans chaque mémoire tampon de couleurs RVBA.

cBlueShift

Spécifie le nombre de décalages pour les plans de bits bleus dans chaque mémoire tampon de couleurs RVBA.

cAlphaBits

Spécifie le nombre de plans de bits alpha dans chaque mémoire tampon de couleurs RVBA. Les plans de bits alpha ne sont pas pris en charge.

cAlphaShift

Spécifie le nombre de décalages pour les plans de bits alpha dans chaque mémoire tampon de couleurs RVBA. Les plans de bits alpha ne sont pas pris en charge.

cAccumBits

Spécifie le nombre total de plans de bits dans la mémoire tampon d’accumulation.

cAccumRedBits

Spécifie le nombre de plans de bits rouges dans la mémoire tampon d’accumulation.

cAccumGreenBits

Spécifie le nombre de plans de bits verts dans la mémoire tampon d’accumulation.

cAccumBlueBits

Spécifie le nombre de plans de bits bleus dans la mémoire tampon d’accumulation.

cAccumAlphaBits

Spécifie le nombre de plans de bits alpha dans la mémoire tampon d’accumulation.

cDepthBits

Spécifie la profondeur de la mémoire tampon de profondeur (axe z).

cStencilBits

Spécifie la profondeur de la mémoire tampon de gabarit.

cAuxBuffers

Spécifie le nombre de mémoires tampons auxiliaires. Les mémoires tampons auxiliaires ne sont pas prises en charge.

iLayerType

Ignoré. Les implémentations antérieures d’OpenGL utilisaient ce membre, mais il n’est plus utilisé.

bReserved

Spécifie le nombre de plans de superposition et de sous-couche. Les bits 0 à 3 spécifient jusqu’à 15 plans de superposition et les bits 4 à 7 spécifient jusqu’à 15 plans de sous-couche.

dwLayerMask

Ignoré. Les implémentations antérieures d’OpenGL utilisaient ce membre, mais il n’est plus utilisé.

dwVisibleMask

Spécifie la couleur transparente ou l’index d’un plan sous-jacent. Lorsque le type de pixel est RVBA, dwVisibleMask est une valeur de couleur RVB transparente. Lorsque le type de pixel est un index de couleur, il s’agit d’une valeur d’index transparente.

dwDamageMask

Ignoré. Les implémentations antérieures d’OpenGL utilisaient ce membre, mais il n’est plus utilisé.

Remarques

Notez soigneusement, comme indiqué ci-dessus, que certaines propriétés de format de pixels ne sont pas prises en charge dans l’implémentation générique actuelle. L’implémentation générique est l’implémentation logicielle Microsoft GDI d’OpenGL. Les fabricants de matériel peuvent améliorer certaines parties d’OpenGL et peuvent prendre en charge certaines propriétés de format de pixels non prises en charge par l’implémentation générique.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête wingdi.h

Voir aussi

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

OpenGL sur Windows

SetPixelFormat

Structures