Operaciones de migración de píxeles

Al migrar código que implica operaciones de píxeles, tenga en cuenta los siguientes puntos:

  • Las operaciones de píxeles lógicos no se aplican a los búferes de color RGBA. Para obtener más información, consulte glLogicOp.
  • En general, IRIS GL usa el formato ABGR para píxeles, mientras que OpenGL usa RGBA. Puede cambiar el formato con glPixelStore.
  • Al portar las funciones lrectwrite , tenga cuidado de tener en cuenta dónde está escribiendo lrectwrite (por ejemplo, podría estar escribiendo en el búfer de profundidad).

OpenGL proporciona cierta flexibilidad adicional en las operaciones de píxeles. En la tabla siguiente se enumeran las funciones IRIS GL para las operaciones de píxeles y sus funciones de OpenGL equivalentes.

Función IRIS GL Función OpenGL Significado
lrectread, rectread,readRGB
glReadPixels Lee un bloque de píxeles del búfer de fotogramas.
lrectwrite, rectwrite glDrawPixels Escribe un bloque de píxeles en el búfer de fotogramas.
rectcopy glCopyPixels Copia píxeles en el búfer de fotogramas.
rectzoom glPixelZoom Especifica factores de zoom de píxeles para glDrawPixels y glCopyPixels.
cmov glRasterPos Especifica la posición de trama para las operaciones de píxeles.
readsource glReadBuffer Selecciona un origen de búfer de color para píxeles.
pixmode glPixelStore,glPixelTransfer Establece los modos de almacenamiento de píxeles. Establecer modos de transferencia de píxeles.
logicop glLogicOp Especifica una operación lógica para las escrituras de píxeles.
glEnable ( GL_LOGIC_OP ) Activa las operaciones lógicas de píxeles.

Para obtener una lista completa de las posibles operaciones lógicas, consulte glLogicOp.

Este ejemplo de código IRIS GL muestra una escritura de píxeles típica:

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

El código anterior tiene este aspecto cuando se traduce a OpenGL:

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