Porting Pixel Operations

When porting code that involves pixel operations, keep the following points in mind:

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 Read a block of pixels from the frame buffer.
lrectwrite, rectwrite glDrawPixels Write a block of pixels to the frame buffer.
rectcopy glCopyPixels Copy pixels in the frame buffer.
rectzoom glPixelZoom Specify pixel zoom factors for glDrawPixels and glCopyPixels.
cmov glRasterPos Specify raster position for pixel operations.
readsource glReadBuffer Select a color buffer source for pixels.
pixmode glPixelStore,
glPixelTransfer
Set pixel storage modes.
Set pixel transfer modes.
logicop glLogicOp Specify a logical operation for pixel writes.
glEnable(GL_LOGIC_OP) Turn 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);