Operações de pixel de portabilidade

Ao portar o código que envolve operações de pixel, tenha em mente os seguintes pontos:

  • As operações lógicas de pixel não são aplicadas a buffers de cores RGBA. Para obter mais informações, consulte glLogicOp.
  • Em geral, o IRIS GL usa o formato ABGR para pixels, enquanto o OpenGL usa RGBA. Você pode alterar o formato com glPixelStore.
  • Ao portar funções lrectwrite , tenha cuidado ao observar onde lrectwrite está gravando (por exemplo, ele pode estar gravando no buffer de profundidade).

O OpenGL oferece alguma flexibilidade adicional nas operações de pixel. A tabela a seguir lista as funções GL do IRIS para operações de pixel e suas funções OpenGL equivalentes.

Função IRIS GL Função OpenGL Significado
lrectread, rectread, readRGB
glReadPixels Lê um bloco de pixels do framebuffer.
lrectwrite, rectwrite glDrawPixels Grava um bloco de pixels no framebuffer.
rectcopy glCopyPixels Copia pixels no framebuffer.
rectzoom glPixelZoom Especifica fatores de zoom de pixel para glDrawPixels e glCopyPixels.
cmov glRasterPos Especifica a posição de raster para operações de pixel.
readsource glReadBuffer Seleciona uma fonte de buffer de cores para pixels.
pixmode glPixelStore,glPixelTransfer Define modos de armazenamento de pixels. Definir modos de transferência de pixel.
logicop glLogicOp Especifica uma operação lógica para gravações de pixel.
glEnable ( GL_LOGIC_OP ) Ativa as operações lógicas de pixel.

Para obter uma lista completa de possíveis operações lógicas, consulte glLogicOp.

Este exemplo de código IRIS GL mostra uma gravação de pixel típica:

unsigned long *packedRaster; 
.. 
packedRaster[k] = 0x00000000; 
.. 
lrectwrite(0, 0, xSize, ySize, packedRaster);

O código anterior tem esta aparência quando traduzido para OpenGL:

glRasterPos2i( 0, 0); 
glDrawPixels( xSize + 1, ySize + 1, GL_RGBA, GL_UNSIGNED_BYTE, packedRaster);