移植像素操作

移植涉及像素操作的代码时,请记住以下几点:

  • 逻辑像素操作不应用于 RGBA 颜色缓冲区。 有关详细信息,请参阅 glLogicOp
  • 通常,IRIS GL 使用 ABGR 格式表示像素,而 OpenGL 使用 RGBA。 可以使用 glPixelStore 更改格式。
  • 移植 lrectwrite 函数时,请注意 lrectwrite 正在写入 (的位置,例如,它可以写入深度缓冲区) 。

OpenGL 提供像素操作的一些附加灵活性。 下表列出了用于像素操作的 IRIS GL 函数及其等效 OpenGL 函数。

IRIS GL 函数 OpenGL 函数 含义
lrectreadrectreadreadRGB
glReadPixels 从帧缓冲区读取像素块。
lrectwriterectwrite glDrawPixels 将像素块写入帧缓冲区。
rectcopy glCopyPixels 复制帧缓冲区中的像素。
rectzoom glPixelZoom 指定 glDrawPixelsglCopyPixels 的像素缩放因子。
cmov glRasterPos 指定像素操作的光栅位置。
readsource glReadBuffer 为像素选择颜色缓冲区源。
pixmode glPixelStoreglPixelTransfer 设置像素存储模式。设置像素传输模式。
logicop glLogicOp 指定像素写入的逻辑操作。
glEnable ( GL_LOGIC_OP ) 打开像素逻辑操作。

有关可能的逻辑操作的完整列表,请参阅 glLogicOp

此 IRIS GL 代码示例显示了典型的像素写入:

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

在转换为 OpenGL 时,前面的代码如下所示:

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