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);