Porting Pixel Operations
When porting code that involves pixel operations, keep the following points in mind:
- Logical pixel operations are not applied to RGBA color buffers. For more information, see glLogicOp.
- In general, IRIS GL uses the format ABGR for pixels, whereas OpenGL uses RGBA. You can change the format with glPixelStore.
- When porting lrectwrite functions, be careful to note where lrectwrite is writing (for example, it could be writing to the depth buffer).
OpenGL gives you some additional flexibility in pixel operations. The following table lists IRIS GL functions for pixel operations and their equivalent OpenGL functions.
IRIS GL function | OpenGL function | Meaning |
---|---|---|
lrectread, rectread,readRGB |
glReadPixels | Reads a block of pixels from the framebuffer. |
lrectwrite, rectwrite | glDrawPixels | Writes a block of pixels to the framebuffer. |
rectcopy | glCopyPixels | Copies pixels in the framebuffer. |
rectzoom | glPixelZoom | Specifies pixel zoom factors for glDrawPixels and glCopyPixels. |
cmov | glRasterPos | Specifies raster position for pixel operations. |
readsource | glReadBuffer | Selects a color buffer source for pixels. |
pixmode | glPixelStore,glPixelTransfer | Sets pixel storage modes.Set pixel transfer modes. |
logicop | glLogicOp | Specifies a logical operation for pixel writes. |
glEnable ( GL_LOGIC_OP ) | Turns on pixel logic operations. |
For a complete list of possible logical operations, see glLogicOp.
This IRIS GL code sample shows a typical pixel write:
unsigned long *packedRaster;
..
packedRaster[k] = 0x00000000;
..
lrectwrite(0, 0, xSize, ySize, packedRaster);
The preceding code looks like this when translated to OpenGL:
glRasterPos2i( 0, 0);
glDrawPixels( xSize + 1, ySize + 1, GL_RGBA, GL_UNSIGNED_BYTE, packedRaster);
Feedback
Submit and view feedback for