Condividi tramite


Struttura PIXELFORMATDESCRIPTOR (wingdi.h)

La struttura PIXELFORMATDESCRIPTOR descrive il formato pixel di una superficie di disegno.

Sintassi

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;

Members

nSize

Specifica le dimensioni di questa struttura di dati. Questo valore deve essere impostato su sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Specifica la versione di questa struttura di dati. Questo valore deve essere impostato su 1.

dwFlags

Set di flag di bit che specificano le proprietà del buffer pixel. Le proprietà in genere non si escludono a vicenda; è possibile impostare qualsiasi combinazione di flag di bit, con le eccezioni indicate. Vengono definite le costanti del flag di bit seguenti.

Valore Significato
PFD_DRAW_TO_WINDOW
0x00000004
Il buffer può disegnare in una finestra o in una superficie del dispositivo.
PFD_DRAW_TO_BITMAP
0x00000008
Il buffer può disegnare in una bitmap di memoria.
PFD_SUPPORT_GDI
0x00000010
Il buffer supporta il disegno GDI. Questo flag e PFD_DOUBLEBUFFER si escludono a vicenda nell'implementazione generica corrente.
PFD_SUPPORT_OPENGL
0x00000020
Il buffer supporta il disegno OpenGL.
PFD_GENERIC_ACCELERATED
0x00001000
Il formato pixel è supportato da un driver di dispositivo che accelera l'implementazione generica. Se questo flag è chiaro e viene impostato il flag di PFD_GENERIC_FORMAT, il formato pixel è supportato solo dall'implementazione generica.
PFD_GENERIC_FORMAT
0x00000040
Il formato pixel è supportato dall'implementazione del software GDI, nota anche come implementazione generica. Se questo bit è chiaro, il formato pixel è supportato da un driver di dispositivo o da un hardware.
PFD_NEED_PALETTE
0x00000080
Il buffer usa i pixel RGBA in un dispositivo gestito dalla tavolozza. Per ottenere i risultati migliori per questo tipo di pixel, è necessaria una tavolozza logica. I colori nella tavolozza devono essere specificati in base ai valori dei membri cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits e cBlueShift . La tavolozza deve essere creata e realizzata nel contesto del dispositivo prima di chiamare wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE
0x00000100
Definito nei descrittori di formato pixel dell'hardware che supporta una tavolozza hardware solo in modalità a colori 256. Affinché tali sistemi usino l'accelerazione hardware, la tavolozza hardware deve essere in ordine fisso (ad esempio 3-3-2) quando è in modalità RGBA o deve corrispondere alla tavolozza logica quando è in modalità di indice dei colori. Quando questo flag è impostato, è necessario chiamare SetSystemPaletteUse nel programma per forzare un mapping uno-a-uno della tavolozza logica e della tavolozza di sistema. Se l'hardware OpenGL supporta più tavolozze hardware e il driver di dispositivo può allocare tavolozze hardware di riserva per OpenGL, questo flag è in genere chiaro.

Questo flag non è impostato nei formati pixel generici.

PFD_DOUBLEBUFFER
0x00000001
Il buffer viene memorizzato nel doppio buffer. Questo flag e PFD_SUPPORT_GDI si escludono a vicenda nell'implementazione generica corrente.
PFD_STEREO
0x00000002
Il buffer è stereoscopico. Questo flag non è supportato nell'implementazione generica corrente.
PFD_SWAP_LAYER_BUFFERS
0x00000800
Indica se un dispositivo può scambiare singoli piani di livello con formati pixel che includono sovrapposizione a doppio buffer o piani di sottosezioni. In caso contrario, tutti i piani livello vengono scambiati insieme come gruppo. Quando questo flag è impostato, wglSwapLayerBuffers è supportato.
 

È possibile specificare i flag di bit seguenti quando si chiama ChoosePixelFormat.

Valore Significato
PFD_DEPTH_DONTCARE
0x20000000
Il formato pixel richiesto può avere o meno un buffer di profondità. Per selezionare un formato pixel senza un buffer di profondità, è necessario specificare questo flag. Il formato pixel richiesto può essere con o senza un buffer di profondità. In caso contrario, vengono considerati solo i formati pixel con un buffer di profondità.
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
Il formato pixel richiesto può essere con buffer singolo o doppio.
PFD_STEREO_DONTCARE
0x80000000
Il formato pixel richiesto può essere monoscopico o stereoscopico.
 

Con la funzione di estensione glAddSwapHintRectWIN , sono inclusi due nuovi flag per la struttura di formato pixel PIXELFORMATDESCRIPTOR .

Valore Significato
PFD_SWAP_COPY
0x00000400
Specifica il contenuto del buffer nascosto nel piano colore principale con doppio buffer dopo uno scambio di buffer. Se si scambiano i buffer di colore, il contenuto del buffer nascosto viene copiato nel buffer anteriore. Il contenuto del buffer nascosto non è interessato dallo scambio. PFD_SWAP_COPY è un suggerimento solo e potrebbe non essere fornito da un driver.
PFD_SWAP_EXCHANGE
0x00000200
Specifica il contenuto del buffer nascosto nel piano colore principale con doppio buffer dopo uno scambio di buffer. Lo scambio dei buffer di colore causa lo scambio del contenuto del buffer nascosto con il contenuto del buffer anteriore. Dopo lo scambio, il contenuto del buffer nascosto contiene il contenuto del buffer anteriore prima dello scambio. PFD_SWAP_EXCHANGE è un suggerimento solo e potrebbe non essere fornito da un driver.

iPixelType

Specifica il tipo di dati pixel. Vengono definiti i tipi seguenti.

Valore Significato
PFD_TYPE_RGBA
0
Pixel RGBA. Ogni pixel ha quattro componenti in questo ordine: rosso, verde, blu e alfa.
PFD_TYPE_COLORINDEX
1
Pixel di indice colore. Ogni pixel usa un valore di indice color.

cColorBits

Specifica il numero di bitplani di colore in ogni buffer di colori. Per i tipi di pixel RGBA, è la dimensione del buffer di colore, escluso i bitplani alfa. Per i pixel di indice dei colori, è la dimensione del buffer dell'indice colore.

cRedBits

Specifica il numero di bitplani rossi in ogni buffer di colore RGBA.

cRedShift

Specifica il numero di maiuscole per i bitplani rossi in ogni buffer di colore RGBA.

cGreenBits

Specifica il numero di bitplani verdi in ogni buffer di colore RGBA.

cGreenShift

Specifica il numero di maiuscole per i bitplani verdi in ogni buffer di colore RGBA.

cBlueBits

Specifica il numero di bitplani blu in ogni buffer di colore RGBA.

cBlueShift

Specifica il numero di maiuscole per i bitplani blu in ogni buffer di colore RGBA.

cAlphaBits

Specifica il numero di bitplani alfa in ogni buffer di colore RGBA. I bitplani alfa non sono supportati.

cAlphaShift

Specifica il numero di maiuscole per i bitplani alfa in ogni buffer di colore RGBA. I bitplani alfa non sono supportati.

cAccumBits

Specifica il numero totale di bitplani nel buffer di accumulo.

cAccumRedBits

Specifica il numero di bitplani rossi nel buffer di accumulo.

cAccumGreenBits

Specifica il numero di bitplani verdi nel buffer di accumulo.

cAccumBlueBits

Specifica il numero di bitplani blu nel buffer di accumulo.

cAccumAlphaBits

Specifica il numero di bitplani alfa nel buffer di accumulo.

cDepthBits

Specifica la profondità del buffer di profondità (asse z).

cStencilBits

Specifica la profondità del buffer stencil.

cAuxBuffers

Specifica il numero di buffer ausiliari. I buffer ausiliari non sono supportati.

iLayerType

Ignorato. Le implementazioni precedenti di OpenGL usano questo membro, ma non vengono più usate.

bReserved

Specifica il numero di piani di sovrimpressione e sottolay. I bit da 0 a 3 specificano fino a 15 piani di sovrapposizione e bit da 4 a 7 specificano fino a 15 piani di sottolay.

dwLayerMask

Ignorato. Le implementazioni precedenti di OpenGL usano questo membro, ma non vengono più usate.

dwVisibleMask

Specifica il colore trasparente o l'indice di un piano di sottolay. Quando il tipo di pixel è RGBA, dwVisibleMask è un valore di colore RGB trasparente. Quando il tipo di pixel è indice colore, è un valore di indice trasparente.

dwDamageMask

Ignorato. Le implementazioni precedenti di OpenGL usano questo membro, ma non vengono più usate.

Commenti

Si noti con attenzione, come documentato in precedenza, che alcune proprietà del formato pixel non sono supportate nell'implementazione generica corrente. L'implementazione generica è l'implementazione del software Microsoft GDI di OpenGL. I produttori di hardware possono migliorare le parti di OpenGL e possono supportare alcune proprietà di formato pixel non supportate dall'implementazione generica.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione wingdi.h

Vedi anche

ChoosePixelFormat

DescriverePixelFormat

GetPixelFormat

OpenGL in Windows

SetPixelFormat

Strutture