移植像素操作

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

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

OpenGL 为像素操作提供了一些额外的灵活性。 下表列出了像素运算的 IRIS GL 函数及其等效 OpenGL 函数。

IRIS GL 函数 OpenGL 函数 含义
lrectreadrectreadreadRGB
glReadPixels 从帧缓冲区读取像素块。
lrectwriterectwrite glDrawPixels 将像素块写入帧缓冲区。
rectcopy glCopyPixels 复制 framebuffer 中的像素。
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);