Operações de pixel de portabilidade

Ao portar o código que envolve operações de pixel, lembre-se dos seguintes pontos:

  • As operações de pixel lógico não são aplicadas a buffers de cor 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 flexibilidade adicional nas operações de pixel. A tabela a seguir lista as funções IRIS GL para operações de pixel e suas funções OpenGL equivalentes.

Função GL do IRIS Função OpenGL Significado
lrectread, rectread, readRGB
glReadPixels Lê um bloco de pixels do framebuffer.
lrectwrite, rectwrite glDrawPixels Grava um bloco de pixels no cofre de quadros.
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 os 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 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 GL do IRIS 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);