Compartilhar via


Função glPixelTransferi

As funções glPixelTransferf e glPixelTransferi definem modos de transferência de pixel.

Sintaxe

void WINAPI glPixelTransferi(
   GLenum pname,
   GLint  param
);

Parâmetros

Pname

O nome simbólico do parâmetro de transferência de pixel a ser definido. A tabela a seguir fornece o tipo, o valor inicial e o intervalo de valores válidos para cada um dos parâmetros de transferência de pixel definidos com glPixelTransfer.

Pname Type Valor inicial Intervalo Válido
GL_MAP_COLOR Boolean false true/false
GL_MAP_STENCIL Boolean false true/false
GL_INDEX_SHIFT inteiro 0 (8,8)
GL_INDEX_OFFSET inteiro 0 (8,8)
GL_RED_SCALE Número inteiro 1,0 (8,8)
GL_GREEN_SCALE FLOAT 1.0 (8,8)
GL_BLUE_SCALE FLOAT 1.0 (8,8)
GL_ALPHA_SCALE FLOAT 1.0 (8,8)
GL_DEPTH_SCALE FLOAT 1.0 (8,8)
GL_RED_BIAS FLOAT 0,0 (8,8)
GL_GREEN_BIAS FLOAT 0,0 (8,8)
GL_BLUE_BIAS FLOAT 0,0 (8,8)
GL_ALPHA_BIAS FLOAT 0,0 (8,8)
GL_DEPTH_BIAS FLOAT 0,0 (8,8)

param

O valor para o qual pname está definido.

Retornar valor

Essa função não retorna um valor.

Comentários

A função glPixelTransfer define modos de transferência de pixel que afetam a operação dos comandos glCopyPixels, glCopyTexImage1D, glCopyTexImage2D, glCopyTexSubImage1D, glCopyTexSubImage2D, glDrawPixels, glReadPixels, glTexImage1D, glTexImage2D, glTexSubImage1D e glTexSubImage2D . Os algoritmos especificados pelos modos de transferência de pixel operam em pixels depois de serem lidos do framebuffer (glReadPixels e glCopyPixels) ou descompactados da memória do cliente (glDrawPixels, glTexImage1D e glTexImage2D). As operações de transferência de pixel ocorrem na mesma ordem e da mesma maneira, independentemente do comando que resultou na operação de pixel. Os modos de armazenamento de pixels (glPixelStore) controlam o desempacotar pixels que estão sendo lidos da memória do cliente e o empacotamento de pixels sendo gravados novamente na memória do cliente.

As operações de transferência de pixel lidam com quatro tipos de pixel fundamentais: cor, índice de cores, profundidade e estêncil. Os pixels de cor são compostos por quatro valores de ponto flutuante com mantissa e tamanhos expoentes não especificados, dimensionados de modo que 0,0 representa intensidade zero e 1,0 representa intensidade total. Os índices de cores compõem um único valor de ponto fixo, com precisão não especificada à direita do ponto binário. Os pixels de profundidade compõem um único valor de ponto flutuante, com mantissa e tamanhos expoentes não especificados, dimensionados de modo que 0,0 representa o valor mínimo do buffer de profundidade e 1,0 representa o valor máximo do buffer de profundidade. Por fim, pixels de estêncil compõem um único valor de ponto fixo, com precisão não especificada à direita do ponto binário.

As operações de transferência de pixel executadas nos quatro tipos básicos de pixel são as seguintes:

Tipo de pixel Operação de transferência de pixel
Cor Cada um dos quatro componentes de cor é multiplicado por um fator de escala e, em seguida, adicionado a um fator de viés. Ou seja, o componente vermelho é multiplicado por GL_RED_SCALE e, em seguida, adicionado a GL_RED_BIAS; o componente verde é multiplicado por GL_GREEN_SCALE e adicionado a GL_GREEN_BIAS; o componente azul é multiplicado por GL_BLUE_SCALE e adicionado a GL_BLUE_BIAS; e o componente alfa são multiplicados por GL_ALPHA_SCALE e adicionados a GL_ALPHA_BIAS. Depois que todos os quatro componentes de cor forem dimensionados e tendenciosos, cada um será fixado ao intervalo [0,1]. Todos os valores de escala e desvio de cores são especificados com glPixelTransfer.
Se GL_MAP_COLOR for true, cada componente de cor será dimensionado pelo tamanho do mapa cor a cor correspondente e substituído pelo conteúdo desse mapa indexado pelo componente dimensionado. Ou seja, o componente vermelho é dimensionado por GL_PIXEL_MAP_R_TO_R_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_R_TO_R indexado por si mesmo. O componente verde é dimensionado por GL_PIXEL_MAP_G_TO_G_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_G_TO_G indexado por si mesmo. O componente azul é dimensionado por GL_PIXEL_MAP_B_TO_B_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_B_TO_B indexado por si só. O componente alfa é dimensionado por GL_PIXEL_MAP_A_TO_A_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_A_TO_A indexado por si mesmo. Todos os componentes retirados dos mapas são então fixados no intervalo [0,1]. GL_MAP_COLOR é especificado com glPixelTransfer. O conteúdo dos vários mapas é especificado com glPixelMap.
Índice de cores Cada índice de cores é deslocado para a esquerda por GL_INDEX_SHIFT bits, preenchendo com zeros qualquer bit além do número de bits de fração transportados pelo índice de ponto fixo. Se GL_INDEX_SHIFT for negativo, a mudança será para a direita, novamente zero preenchido. GL_INDEX_OFFSET é adicionado ao índice. GL_INDEX_SHIFT e GL_INDEX_OFFSET são especificados com glPixelTransfer.
Desse ponto, a operação diverge dependendo do formato necessário dos pixels resultantes. Se os pixels resultantes forem gravados em um buffer de índice de cores ou se estiverem sendo lidos novamente na memória do cliente no formato GL_COLOR_INDEX, os pixels continuarão a ser tratados como índices. Se GL_MAP_COLOR for true, cada índice será mascarado por 2 ^ n 1, em que n é GL_PIXEL_MAP_I_TO_I_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_I_TO_I indexado pelo valor mascarado. GL_MAP_COLOR é especificado com glPixelTransfer. O conteúdo do mapa de índice é especificado com glPixelMap.
Se os pixels resultantes forem gravados em um buffer de cores RGBA ou se estiverem sendo lidos novamente na memória do cliente em um formato diferente de GL_COLOR_INDEX, os pixels serão convertidos de índices em cores fazendo referência aos quatro mapas GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B e GL_PIXEL_MAP_I_TO_A. Antes de ser desreferenciado, o índice é mascarado por 2 n 1, onde n é GL_PIXEL_MAP_I_TO_R_SIZE para o mapa vermelho, GL_PIXEL_MAP_I_TO_G_SIZE para o mapa verde, GL_PIXEL_MAP_I_TO_B_SIZE para o mapa azul e GL_PIXEL_MAP_I_TO_A_SIZE para o mapa alfa. Todos os componentes retirados dos mapas são então fixados no intervalo [0,1]. O conteúdo dos quatro mapas é especificado com glPixelMap.
Profundidade Cada valor de profundidade é multiplicado por GL_DEPTH_SCALE, adicionado a GL_DEPTH_BIAS e, em seguida, fixado no intervalo [0,1].
Stencil Cada índice é deslocado GL_INDEX_SHIFT bits da mesma forma que um índice de cor e, em seguida, adicionado a GL_INDEX_OFFSET. Se GL_MAP_STENCIL for true, cada índice será mascarado por 2n 1, em que n é GL_PIXEL_MAP_S_TO_S_SIZE e substituído pelo conteúdo de GL_PIXEL_MAP_S_TO_S indexado pelo valor mascarado.

A função glPixelTransferf pode ser usada para definir qualquer parâmetro de transferência de pixel. Se o tipo de parâmetro for booliano, 0,0 implicará false e qualquer outro valor implicará true. Se pname for um parâmetro inteiro, param será arredondado para o inteiro mais próximo.

Da mesma forma, glPixelTransferi também pode ser usado para definir qualquer um dos parâmetros de transferência de pixel. Os parâmetros boolianos serão definidos como false se param for 0 e true caso contrário. O parâmetro param é convertido em ponto flutuante antes de ser atribuído a parâmetros com valor real.

Se um comando glDrawPixels, glReadPixels, glCopyPixels, glTexImage1D ou glTexImage2D for colocado em uma lista de exibição (consulte glNewList e glCallList), as configurações do modo de transferência de pixels em vigor quando a lista de exibição é executada são as usadas. Eles podem ser diferentes das configurações quando o comando foi compilado na lista de exibição.

As seguintes funções recuperam informações relacionadas ao glPixelTransfer:

glGet com GL_MAP_COLOR de argumento

glGet com GL_MAP_STENCIL de argumento

glGet com GL_INDEX_SHIFT de argumento

glGet com GL_INDEX_OFFSET de argumento

glGet com GL_RED_SCALE de argumento

glGet com GL_RED_BIAS de argumento

glGet com GL_GREEN_SCALE de argumento

glGet com GL_GREEN_BIAS de argumento

glGet com GL_BLUE_SCALE de argumento

glGet com GL_BLUE_BIAS de argumento

glGet com GL_ALPHA_SCALE de argumento

glGet com GL_ALPHA_BIAS de argumento

glGet com GL_DEPTH_SCALE de argumento

glGet com GL_DEPTH_BIAS de argumento

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
Gl.h
Biblioteca
Opengl32.lib
DLL
Opengl32.dll

Confira também

glBegin

glCallList

glCopyPixels

glDrawPixels

glEnd

glNewList

glPixelMap

glPixelStore

glPixelZoom

glReadPixels

glTexImage1D

glTexImage2D