Porting di operazioni pixel

Quando si esegue il porting di codice che coinvolge operazioni in pixel, tenere presente quanto segue:

  • Le operazioni di pixel logici non vengono applicate ai buffer dei colori RGBA. Per ulteriori informazioni, vedere glLogicOp.
  • In generale, IRIS GL usa il formato ABGR per pixel, mentre OpenGL USA RGBA. È possibile modificare il formato con glPixelStore.
  • Quando si esegue il porting delle funzioni lrectwrite , prestare attenzione a prendere nota del percorso di scrittura di lrectwrite (ad esempio, potrebbe scrivere nel buffer di profondità).

OpenGL offre una maggiore flessibilità nelle operazioni pixel. La tabella seguente elenca le funzioni di IRIS GL per le operazioni pixel e le relative funzioni OpenGL equivalenti.

Funzione IRIS GL OpenGL (funzione) Significato
lrectread, rectread,readRGB
glReadPixels Legge un blocco di pixel dal framebuffer.
lrectwrite, rectwrite glDrawPixels Scrive un blocco di pixel nel framebuffer.
rectcopy glCopyPixels Copia i pixel nel framebuffer.
rectzoom glPixelZoom Specifica i fattori di zoom pixel per glDrawPixels e glCopyPixels.
CMOV glRasterPos Specifica la posizione raster per le operazioni pixel.
readsource glReadBuffer Consente di selezionare un'origine del buffer dei colori per i pixel.
pixmode glPixelStore,glPixelTransfer Imposta le modalità di archiviazione pixel. Impostare le modalità di trasferimento pixel.
logicop glLogicOp Specifica un'operazione logica per le Scritture in pixel.
glEnable ( _ op logica GL _ ) Attiva le operazioni della logica pixel.

Per un elenco completo delle possibili operazioni logiche, vedere glLogicOp.

Questo esempio di codice IRIS GL Mostra una tipica scrittura in pixel:

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

Il codice precedente ha un aspetto simile al seguente quando viene convertito in OpenGL:

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