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);
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de