Estrutura PIXELFORMATDESCRIPTOR (wingdi.h)

A estrutura PIXELFORMATDESCRIPTOR descreve o formato de pixel de uma superfície de desenho.

Sintaxe

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;

Membros

nSize

Especifica o tamanho dessa estrutura de dados. Esse valor deve ser definido como sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Especifica a versão dessa estrutura de dados. Esse valor deve ser definido como 1.

dwFlags

Um conjunto de sinalizadores de bits que especificam propriedades do buffer de pixel. As propriedades geralmente não são mutuamente exclusivas; você pode definir qualquer combinação de sinalizadores de bits, com as exceções indicadas. As seguintes constantes de sinalizador de bit são definidas.

Valor Significado
PFD_DRAW_TO_WINDOW
0x00000004
O buffer pode desenhar em uma janela ou superfície do dispositivo.
PFD_DRAW_TO_BITMAP
0x00000008
O buffer pode ser desenhado para um bitmap de memória.
PFD_SUPPORT_GDI
0x00000010
O buffer dá suporte ao desenho GDI. Esse sinalizador e PFD_DOUBLEBUFFER são mutuamente exclusivos na implementação genérica atual.
PFD_SUPPORT_OPENGL
0x00000020
O buffer dá suporte ao desenho opengl.
PFD_GENERIC_ACCELERATED
0x00001000
O formato de pixel é suportado por um driver de dispositivo que acelera a implementação genérica. Se esse sinalizador estiver claro e o sinalizador PFD_GENERIC_FORMAT estiver definido, o formato de pixel terá suporte apenas para a implementação genérica.
PFD_GENERIC_FORMAT
0x00000040
O formato de pixel é compatível com a implementação de software GDI, que também é conhecida como implementação genérica. Se esse bit estiver claro, o formato de pixel terá suporte de um driver de dispositivo ou hardware.
PFD_NEED_PALETTE
0x00000080
O buffer usa pixels RGBA em um dispositivo gerenciado por paleta. Uma paleta lógica é necessária para obter os melhores resultados para esse tipo de pixel. As cores na paleta devem ser especificadas de acordo com os valores dos membros cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits e cBlueShift . A paleta deve ser criada e realizada no contexto do dispositivo antes de chamar wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE
0x00000100
Definidos nos descritores de formato de pixel de hardware que dão suporte a uma paleta de hardware somente no modo de 256 cores. Para que esses sistemas usem aceleração de hardware, a paleta de hardware deve estar em uma ordem fixa (por exemplo, 3-3-2) quando no modo RGBA ou deve corresponder à paleta lógica quando estiver no modo de índice de cores. Quando esse sinalizador estiver definido, você deverá chamar SetSystemPaletteUse em seu programa para forçar um mapeamento um-para-um da paleta lógica e da paleta do sistema. Se o hardware OpenGL der suporte a várias paletas de hardware e o driver do dispositivo puder alocar paletas de hardware sobressalentes para OpenGL, esse sinalizador normalmente estará claro.

Esse sinalizador não é definido nos formatos de pixel genéricos.

PFD_DOUBLEBUFFER
0x00000001
O buffer é armazenado em buffer duplo. Esse sinalizador e PFD_SUPPORT_GDI são mutuamente exclusivos na implementação genérica atual.
PFD_STEREO
0x00000002
O buffer é estereoscópico. Não há suporte para esse sinalizador na implementação genérica atual.
PFD_SWAP_LAYER_BUFFERS
0x00000800
Indica se um dispositivo pode trocar planos de camada individuais por formatos de pixel que incluem sobreposição em buffer duplo ou planos de subposição. Caso contrário, todos os planos de camada são trocados juntos como um grupo. Quando esse sinalizador é definido, há suporte para wglSwapLayerBuffers .
 

Você pode especificar os sinalizadores de bit a seguir ao chamar ChoosePixelFormat.

Valor Significado
PFD_DEPTH_DONTCARE
0x20000000
O formato de pixel solicitado pode ter ou não um buffer de profundidade. Para selecionar um formato de pixel sem um buffer de profundidade, você deve especificar esse sinalizador. O formato de pixel solicitado pode ser com ou sem um buffer de profundidade. Caso contrário, somente formatos de pixel com um buffer de profundidade são considerados.
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
O formato de pixel solicitado pode ser armazenado em buffer único ou duplo.
PFD_STEREO_DONTCARE
0x80000000
O formato de pixel solicitado pode ser monoscópico ou estereoscópico.
 

Com a função de extensão glAddSwapHintRectWIN , dois novos sinalizadores são incluídos para a estrutura de formato de pixel PIXEL PIXELFORMATDESCRIPTOR .

Valor Significado
PFD_SWAP_COPY
0x00000400
Especifica o conteúdo do buffer traseiro no plano de cores de main de buffer duplo após uma troca de buffer. A troca dos buffers de cores faz com que o conteúdo do buffer traseiro seja copiado para o buffer frontal. O conteúdo do buffer traseiro não é afetado pela troca. PFD_SWAP_COPY é apenas uma dica e pode não ser fornecido por um driver.
PFD_SWAP_EXCHANGE
0x00000200
Especifica o conteúdo do buffer traseiro no plano de cores de main de buffer duplo após uma troca de buffer. A troca dos buffers de cores causa a troca do conteúdo do buffer traseiro com o conteúdo do buffer frontal. Após a troca, o conteúdo do buffer traseiro contém o conteúdo do buffer frontal antes da troca. PFD_SWAP_EXCHANGE é apenas uma dica e pode não ser fornecido por um driver.

iPixelType

Especifica o tipo de dados de pixel. Os tipos a seguir são definidos.

Valor Significado
PFD_TYPE_RGBA
0
Pixels RGBA. Cada pixel tem quatro componentes nesta ordem: vermelho, verde, azul e alfa.
PFD_TYPE_COLORINDEX
1
Pixels de índice de cores. Cada pixel usa um valor de índice de cor.

cColorBits

Especifica o número de bitplanos de cor em cada buffer de cores. Para tipos de pixel RGBA, é o tamanho do buffer de cores, excluindo os bitplanos alfa. Para pixels de índice de cor, é o tamanho do buffer de índice de cores.

cRedBits

Especifica o número de bitplanos vermelhos em cada buffer de cores RGBA.

cRedShift

Especifica a contagem de deslocamentos para bitplanos vermelhos em cada buffer de cores RGBA.

cGreenBits

Especifica o número de planos de bits verdes em cada buffer de cores RGBA.

cGreenShift

Especifica a contagem de turnos para bitplanos verdes em cada buffer de cores RGBA.

cBlueBits

Especifica o número de bitplanos azuis em cada buffer de cores RGBA.

cBlueShift

Especifica a contagem de deslocamentos para planos de bits azuis em cada buffer de cores RGBA.

cAlphaBits

Especifica o número de bitplanos alfa em cada buffer de cores RGBA. Não há suporte para bitplanos alfa.

cAlphaShift

Especifica a contagem de deslocamentos para bitplanos alfa em cada buffer de cores RGBA. Não há suporte para bitplanos alfa.

cAccumBits

Especifica o número total de planos de bits no buffer de acumulação.

cAccumRedBits

Especifica o número de bitplanos vermelhos no buffer de acumulação.

cAccumGreenBits

Especifica o número de bitplanos verdes no buffer de acumulação.

cAccumBlueBits

Especifica o número de bitplanos azuis no buffer de acumulação.

cAccumAlphaBits

Especifica o número de bitplanos alfa no buffer de acumulação.

cDepthBits

Especifica a profundidade do buffer de profundidade (eixo z).

cStencilBits

Especifica a profundidade do buffer de estêncil.

cAuxBuffers

Especifica o número de buffers auxiliares. Não há suporte para buffers auxiliares.

iLayerType

Ignorado. Implementações anteriores do OpenGL usavam esse membro, mas ele não é mais usado.

bReserved

Especifica o número de planos de sobreposição e subposição. Os bits 0 a 3 especificam até 15 planos de sobreposição e os bits 4 a 7 especificam até 15 planos de sobreposição.

dwLayerMask

Ignorado. Implementações anteriores do OpenGL usavam esse membro, mas ele não é mais usado.

dwVisibleMask

Especifica a cor transparente ou o índice de um plano de sobreposição. Quando o tipo de pixel é RGBA, dwVisibleMask é um valor de cor RGB transparente. Quando o tipo de pixel é o índice de cores, ele é um valor de índice transparente.

dwDamageMask

Ignorado. Implementações anteriores do OpenGL usavam esse membro, mas ele não é mais usado.

Comentários

Observe cuidadosamente, conforme documentado acima, que determinadas propriedades de formato de pixel não têm suporte na implementação genérica atual. A implementação genérica é a implementação de software do Microsoft GDI do OpenGL. Os fabricantes de hardware podem aprimorar partes do OpenGL e podem dar suporte a algumas propriedades de formato de pixel não compatíveis com a implementação genérica.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho wingdi.h

Confira também

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

OpenGL no Windows

SetPixelFormat

Estruturas