Portando operações de pixel

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

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

O OpenGL oferece mais flexibilidade em operações de pixel. A tabela a seguir lista as funções do íris GL para operações de pixel e suas funções OpenGL equivalentes.

Função GL de íris 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 os pixels no framebuffer.
rectzoom glPixelZoom Especifica fatores de zoom de pixel para glDrawPixels e glCopyPixels.
cmov glRasterPos Especifica a posição da varredura para as operações de pixel.
leitura glReadBuffer Seleciona uma fonte de buffer de cores para pixels.
pixmode glPixelStore,glPixelTransfer Define os modos de armazenamento em pixels. Definir modos de transferência de pixel.
logicop glLogicOp Especifica uma operação lógica para gravações de pixel.
glEnable ( _ op lógico GL _ ) 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 do íris 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);