Portieren von Pixelvorgängen

Beachten Sie beim Portieren von Code, der Pixelvorgänge umfasst, die folgenden Punkte:

  • Logische Pixelvorgänge werden nicht auf RGBA-Farbpuffer angewendet. Weitere Informationen finden Sie unter glLogicOp.
  • Im Allgemeinen verwendet IRIS GL das Format ABGR für Pixel, während OpenGL RGBA verwendet. Sie können das Format mit glPixelStoreändern.
  • Achten Sie beim Portieren von lrectwrite-Funktionen darauf, dass Sie beachten, wo lrectwrite schreibt (z. B. in den Tiefenpuffer).

OpenGL bietet Ihnen zusätzliche Flexibilität bei Pixelvorgängen. In der folgenden Tabelle sind die IRIS GL-Funktionen für Pixelvorgänge und die entsprechenden OpenGL-Funktionen aufgeführt.

IRIS GL-Funktion OpenGL-Funktion Bedeutung
lrectread, rectread,readRGB
glReadPixels Liest einen Pixelblock aus dem Framepuffer.
lrectwrite, rectwrite glDrawPixels Schreibt einen Block von Pixeln in den Framepuffer.
rectcopy glCopyPixels Kopiert Pixel in den Framepuffer.
rectzoom glPixelZoom Gibt Pixelzoomfaktoren für glDrawPixels und glCopyPixels an.
cmov glRasterPos Gibt die Rasterposition für Pixelvorgänge an.
readsource glReadBuffer Wählt eine Farbpufferquelle für Pixel aus.
pixmode glPixelStore,glPixelTransfer Legt die Pixelspeichermodi fest. Legen Sie die Pixelübertragungsmodi fest.
logicop glLogicOp Gibt einen logischen Vorgang für Pixel-Schreibvorgänge an.
glEnable ( GL _ LOGIC _ OP ) Aktiviert Pixellogikvorgänge.

Eine vollständige Liste der möglichen logischen Vorgänge finden Sie unter glLogicOp.

Dieses IRIS GL-Codebeispiel zeigt einen typischen Pixelschreibvorgang:

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

Der vorangehende Code sieht wie folgt aus, wenn er in OpenGL übersetzt wird:

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