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
|
O buffer pode desenhar em uma janela ou superfície do dispositivo. |
PFD_DRAW_TO_BITMAP
|
O buffer pode ser desenhado para um bitmap de memória. |
PFD_SUPPORT_GDI
|
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
|
O buffer dá suporte ao desenho opengl. |
PFD_GENERIC_ACCELERATED
|
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
|
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
|
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
|
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
|
O buffer é armazenado em buffer duplo. Esse sinalizador e PFD_SUPPORT_GDI são mutuamente exclusivos na implementação genérica atual. |
PFD_STEREO
|
O buffer é estereoscópico. Não há suporte para esse sinalizador na implementação genérica atual. |
PFD_SWAP_LAYER_BUFFERS
|
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
|
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
|
O formato de pixel solicitado pode ser armazenado em buffer único ou duplo. |
PFD_STEREO_DONTCARE
|
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
|
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
|
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
|
Pixels RGBA. Cada pixel tem quatro componentes nesta ordem: vermelho, verde, azul e alfa. |
PFD_TYPE_COLORINDEX
|
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 |