função glDrawPixels

A função glDrawPixels grava um bloco de pixels no framebuffer.

Sintaxe

void WINAPI glDrawPixels(
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

Parâmetros

width

A dimensão de largura do retângulo de pixel que será gravada no framebuffer.

altura

A dimensão de altura do retângulo de pixel que será gravada no framebuffer.

format

O formato dos dados de pixel. As constantes simbólicas aceitáveis são as seguintes.

Valor Significado
GL_COLOR_INDEX
Cada pixel é um único valor, um índice de cores.
  1. A função glDrawPixels converte cada pixel em formato de ponto fixo, com um número não especificado de bits à direita do ponto binário, independentemente do tipo de dados de memória. Os valores de ponto flutuante são convertidos em valores de ponto fixo verdadeiros. A função glDrawPixels converte dados inteiros assinados e não assinados com todos os bits de fração definidos como zero. A função converte dados de bitmap para 0,0 ou 1,0.
  2. A função glDrawPixels desloca cada índice de ponto fixo à esquerda por GL_INDEX_SHIFT bits e o adiciona ao GL_INDEX_OFFSET. Se GL_INDEX_SHIFT for negativo, a mudança será à direita. Em ambos os casos, zero bits ocupam locais de bits não especificados no resultado.
  3. No modo RGBA, glDrawPixels converte o índice resultante em um pixel RGBA usando as tabelas 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. Quando estiver no modo de índice de cor e GL_MAP_COLOR for true, o índice será substituído pelo valor que glDrawPixels referencia na tabela de pesquisa GL_PIXEL_MAP_I_TO_I.
  4. Se a substituição da pesquisa do índice for concluída ou não, a parte inteira do índice será eEd com 2b - 1, em que b é o número de bits em um buffer de índice de cor.
  5. Os índices resultantes ou as cores RGBA são então convertidas em fragmentos anexando as coordenadas de coordenadas ze de textura atuais a cada pixel e, em seguida, atribuindo coordenadas de janela x e y ao nº de fragmento como x? = largura xr + n mod
    y? = yr + n/largura
    onde (xr , yr ) é a posição atual da varredura.
  6. A função glDrawPixels trata esses fragmentos de pixel, assim como os fragmentos gerados pela rasterização de pontos, linhas ou polígonos. Ele aplica o mapeamento de textura, sombra e todas as operações de fragmento antes de gravar os fragmentos no framebuffer.
GL_STENCIL_INDEX
Cada pixel é um único valor, um índice de estêncil.
  1. A função glDrawPixels converte-o em formato de ponto fixo, com um número não especificado de bits à direita do ponto binário, independentemente do tipo de dados de memória. Os valores de ponto flutuante são convertidos em valores de ponto fixo verdadeiros. A função glDrawPixels converte dados inteiros assinados e não assinados com todos os bits de fração definidos como zero. Os dados de bitmap são convertidos em 0,0 ou 1,0.
  2. A função glDrawPixels desloca cada índice de ponto fixo à esquerda por GL_INDEX_SHIFT bits e o adiciona ao GL_INDEX_OFFSET. Se GL_INDEX_SHIFT for negativo, a mudança será à direita. Em ambos os casos, zero bits ocupam locais de bits não especificados no resultado.
  3. Se GL_MAP_STENCIL for true, o índice será substituído pelo valor que glDrawPixels faz referência na tabela de pesquisa GL_PIXEL_MAP_S_TO_S.
  4. Se a substituição da pesquisa do índice for concluída ou não, a parte inteira do índice será , então,Ed com 2b - 1, em que b é o número de bits no buffer do estêncil. Os índices de estêncil resultantes são gravados no buffer de estêncil, de modo que o nº de índice é gravado no local x? = largura xr + n mod
    y? = yr + n/largura
    onde (xr , yr ) é a posição atual da varredura. Somente o teste de propriedade de pixel, o teste de tesoura e o estêncil writemask afetam essas gravações.
GL_DEPTH_COMPONENT
Cada pixel é um componente de profundidade única.
  1. A função glDrawPixels converte dados de ponto flutuante diretamente em um formato de ponto flutuante interno com precisão não especificada. Os dados inteiros assinados são mapeados linearmente para o formato de ponto flutuante interno, de modo que o valor inteiro representável mais positivo seja mapeado para 1,0 e o valor reapresentável mais negativo seja mapeado para-1,0. Os dados inteiros não assinados são mapeados da mesma forma: o maior valor inteiro é mapeado para 1,0 e zero é mapeado para 0,0.
  2. A função glDrawPixels multiplica o valor de profundidade de ponto flutuante resultante por GL_DEPTH_SCALE e o adiciona ao GL_DEPTH_BIAS. O resultado é clamped para o intervalo [0, 1].
  3. A função glDrawPixels converte os componentes de profundidade resultantes em fragmentos anexando a cor atual da posição de varredura ou as coordenadas de textura e índice de cor a cada pixel e, em seguida, atribuindo coordenadas de janela x e y ao n º de fragmento como x? = largura xr + n mod
    y? = yr + n/largura
    onde ( xr ,yr ) é a posição atual da varredura.
  4. Esses fragmentos de pixel são tratados exatamente como os fragmentos gerados pela rasterização de pontos, linhas ou polígonos. A função glDrawPixels aplica o mapeamento de textura, sombra e todas as operações de fragmento antes de gravar os fragmentos no framebuffer.
GL_RGBA
Cada pixel é um grupo de quatro componentes nesta ordem: vermelho, verde, azul, alfa.
  1. A função glDrawPixels converte valores de ponto flutuante diretamente em um formato de ponto flutuante interno com precisão não especificada. Valores inteiros assinados são mapeados linearmente para o formato de ponto flutuante interno, de modo que o valor inteiro representável mais positivo seja mapeado para 1,0 e o valor reapresentável mais negativo seja mapeado para-1,0. Os dados inteiros não assinados são mapeados da mesma forma: o maior valor inteiro é mapeado para 1,0 e zero é mapeado para 0,0.
  2. A função glDrawPixels multiplica os valores de cor de ponto flutuante resultantes por GL_c_SCALE e os adiciona ao GL_c_BIAS, em que c é vermelho, verde, azul e alfa para os respectivos componentes de cor. Os resultados são clamped para o intervalo [0, 1].
  3. Se GL_MAP_COLOR for true, glDrawPixels dimensionará cada componente de cor pelo tamanho da tabela de pesquisa GL_PIXEL_MAP_c_TO_c e, em seguida, substituirá o componente pelo valor que ele faz referência a essa tabela; c é R, G, B ou A, respectivamente.
  4. A função glDrawPixels converte as cores de RGBA resultantes em fragmentos anexando as coordenadas de coordenadas ze de textura atuais a cada pixel e, em seguida, atribuindo coordenadas de janela x e y ao nº de fragmento como x? = largura xr + n mod
    y? = yr + n/Width
    onde (xr ,yr ) é a posição atual da varredura.
  5. Esses fragmentos de pixel são tratados exatamente como os fragmentos gerados pela rasterização de pontos, linhas ou polígonos. A função glDrawPixels aplica o mapeamento de textura, sombra e todas as operações de fragmento antes de gravar os fragmentos no framebuffer.
GL_RED
Cada pixel é um único componente vermelho.
A função glDrawPixels converte esse componente no formato de ponto flutuante interno da mesma forma que o componente vermelho de um pixel RGBA e, em seguida, converte-o em um pixel RGBA com verde e azul definido como 0,0 e alfa definido como 1,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_GREEN
Cada pixel é um único componente verde.
A função glDrawPixels converte esse componente no formato de ponto flutuante interno da mesma forma que o componente verde de um pixel RGBA e, em seguida, converte-o em um pixel RGBA com vermelho e azul definido como 0,0 e alfa definido como 1,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_BLUE
Cada pixel é um único componente azul.
A função glDrawPixels converte esse componente no formato de ponto flutuante interno da mesma forma que o componente azul de um pixel RGBA e, em seguida, converte-o em um pixel RGBA com vermelho e verde definido como 0,0 e alfa definido como 1,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_ALPHA
Cada pixel é um único componente alfa.
A função glDrawPixels converte esse componente no formato de ponto flutuante interno da mesma forma que o componente alfa de um pixel RGBA e, em seguida, converte-o em um pixel RGBA com vermelho, verde e azul definido como 0,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_RGB
Cada pixel é um grupo de três componentes nesta ordem: vermelho, verde, azul. A função glDrawPixels converte cada componente no formato de ponto flutuante interno da mesma forma que os componentes vermelho, verde e azul de um pixel RGBA. A cor tripla é convertida em um pixel RGBA com alfa definido como 1,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_LUMINANCE
Cada pixel é um único componente de luminância.
A função glDrawPixels converte esse componente no formato de ponto flutuante interno da mesma forma que o componente vermelho de um pixel RGBA e, em seguida, converte-o em um pixel RGBA com vermelho, verde e azul definido como o valor de luminância convertido e alfa definido como 1,0. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_LUMINANCE_ALPHA
Cada pixel é um grupo de dois componentes nesta ordem: luminância, alfa.
A função glDrawPixels converte os dois componentes no formato de ponto flutuante interno da mesma maneira que o componente vermelho de um pixel RGBA e os converte em um pixel RGBA com vermelho, verde e azul definido como o valor de luminância convertido e alfa definido para o valor alfa convertido. Após essa conversão, o pixel é tratado da mesma forma como se tivesse sido lido como um pixel RGBA.
GL_BGR_EXT
Cada pixel é um grupo de três componentes nesta ordem: azul, verde e vermelho.
GL_BGR_EXT fornece um formato que corresponde ao layout de memória dos bitmaps independentes de dispositivo do Windows (DIBs). Portanto, seus aplicativos podem usar os mesmos dados com chamadas de função do Windows e chamadas de função de pixel OpenGL.
GL_BGRA_EXT
Cada pixel é um grupo de quatro componentes nesta ordem: azul, verde, vermelho, alfa.
GL_BGRA_EXT fornece um formato que corresponde ao layout de memória dos bitmaps independentes de dispositivo do Windows (DIBs). Portanto, seus aplicativos podem usar os mesmos dados com chamadas de função do Windows e chamadas de função de pixel OpenGL.

tipo

O tipo de dados para pixels. A seguir estão as constantes simbólicas aceitas e seus significados.

Valor Significado
_byte não assinado GL _
Inteiro de 8 bits sem sinal
_byte GL
Inteiro de 8 bits com sinal
_bitmap GL
Bits únicos em inteiros de 8 bits não assinados
GL _ não assinado _ curto
Inteiro de 16 bits sem sinal
GL _ curto
Inteiro de 16 bits com sinal
GL _ não assinado _ int
Inteiro de 32 bits sem sinal
RAZÃO _ int
Inteiro de 32 bits
GL _ float
Ponto flutuante de precisão simples

pixels

Um ponteiro para os dados de pixel.

Retornar valor

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

Códigos do Erro

Os códigos de erro a seguir podem ser recuperados pela função glGetError .

Nome Significado
_valor inválido do GL _
A largura ou a altura era negativa.
GL _ inválido de _ enumeração
O formato ou o tipo não era um valor aceito.
GL _ operação inválida _
Format era GL _ Red, GL _ verde, GL _ Blue, GL _ alfa, GL _ RGB, GL _ RGBA, GL _ BGR _ ext, GL _ BGRA _ ext, GL _ luminância ou GL de _ luminância _ alfa e OpenGL estava no modo de índice de cor.
GL _ inválido de _ enumeração
o tipo era _ o bitmap GL e o formato não era um índice de cores GL _ ou o _ _ Index de estêncil GL _ .
GL _ operação inválida _
o formato era _ _ um índice de estêncil GL e não havia um buffer de estêncil.
GL _ operação inválida _
A função foi chamada entre uma chamada para glBegin e a chamada correspondente para glEnd.

Comentários

A função glDrawPixels lê dados de pixel da memória e grava-os em framebuffer em relação à posição de rasterização atual. Use glRasterPos para definir a posição atual da varredura e use glGet com o argumento _ GL _ posição de varredura atual _ para consultar a posição da rasterização.

Vários parâmetros definem a codificação dos dados de pixel na memória e controlam o processamento dos dados de pixel antes de serem colocados no framebuffer. Esses parâmetros são definidos com quatro funções: glPixelStore, glPixelTransfer, glPixelMape glPixelZoom. Este tópico descreve os efeitos sobre glDrawPixels de muitos, mas não todos, dos parâmetros especificados por essas quatro funções.

Os dados são lidos a partir de pixels como uma sequência de bytes assinados ou sem sinal, inteiros assinados ou sem sinal, inteiro assinado ou não assinado ou valores de ponto flutuante de precisão única, dependendo do tipo. Cada um desses bytes, shorts, inteiros ou valores de ponto flutuante é interpretado como um componente de cor ou profundidade, ou um índice, dependendo do formato. Os índices são sempre tratados individualmente. Os componentes de cor são tratados como grupos de um, dois, três ou quatro valores, novamente com base no formato. Os índices individuais e os grupos de componentes são chamados de pixels. Se o tipo for um _ bitmap GL, os dados deverão ser bytes não assinados e o formato deverá ser um índice de _ cores GL _ ou _ Index de estêncil GL _ . Cada byte não assinado é tratado como pixels de 8 1 bits, com ordenação de bits determinada por GL _ Unpack _ LSB _ First (consulte glPixelStore).

A largura por pixels de altura é lida da memória, começando em pixels de localização. Por padrão, esses pixels são retirados de locais de memória adjacentes, exceto que depois que todos os pixels de largura são lidos, o ponteiro de leitura é avançado para o próximo limite de 4 bytes. A função glPixelStore especifica o alinhamento de linha de 4 bytes com o _ alinhamento de descompactação do argumento GL _ , e você pode defini-lo como 1, 2, 4 ou 8 bytes. Outros parâmetros de armazenamento de pixel especificam avanços de ponteiro de leitura diferentes, antes de o primeiro pixel ser lido e depois que todos os pixels de largura são lidos. A função glPixelStore opera em cada um dos pixels de largura por altura que ele lê da memória da mesma maneira, com base nos valores de vários parâmetros especificados por glPixelTransfer e glPixelMap. Os detalhes dessas operações, bem como o buffer de destino no qual os pixels são desenhados, são específicos ao formato dos pixels, conforme especificado por formato.

A rasterização descrita até o momento pressupõe fatores de zoom de pixel de 1,0. Se você usar glPixelZoom para alterar os fatores de zoom x e y pixel, os pixels serão convertidos em fragmentos da seguinte maneira. Se (XR, ano) for a posição atual da varredura e um determinado pixel estiver na coluna n-th e m th do retângulo de pixel, os fragmentos serão gerados para os pixels cujos centros estão no retângulo com os cantos em

(xr + aplicar zoom? n, yr + zoomy m)

(xr + aplicar zoom? (n + 1), yr + zoomy (m + 1))

onde aplicar zoom? é o valor de GL _ zoom _ X e zoomy é o valor de GL _ zoom _ y.

As funções a seguir recuperam informações relacionadas ao glDrawPixels:

glGet com o argumento _ GL _ posição de rasterização atual _

glGet com Argument GL _ _ posição de rasterização atual _ _ válida

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

glAlphaFunc

glBegin

glBlendFunc

glCopyPixels

glDepthFunc

glEnd

glGet

glLogicOp

glPixelMap

glPixelStore

glPixelTransfer

glPixelZoom

glRasterPos

glReadPixels

glScissor

glStencilFunc