移植像素操作
移植涉及像素操作的代码时,请记住以下几点:
- 逻辑像素操作不应用于 RGBA 颜色缓冲区。 有关详细信息,请参阅 glLogicOp。
- 通常,IRIS GL 对像素使用 ABGR 格式,而 OpenGL 使用 RGBA。 可以使用 glPixelStore 更改格式。
- 移植 lrectwrite 函数时,请注意 lrectwrite 在写入 (的位置,例如,它可能正在写入深度缓冲区) 。
OpenGL 为像素操作提供了一些额外的灵活性。 下表列出了像素运算的 IRIS GL 函数及其等效 OpenGL 函数。
IRIS GL 函数 | OpenGL 函数 | 含义 |
---|---|---|
lrectread、 rectread、readRGB |
glReadPixels | 从帧缓冲区读取像素块。 |
lrectwrite、 rectwrite | glDrawPixels | 将像素块写入帧缓冲区。 |
rectcopy | glCopyPixels | 复制 framebuffer 中的像素。 |
rectzoom | glPixelZoom | 指定 glDrawPixels 和 glCopyPixels 的像素缩放因子。 |
cmov | glRasterPos | 指定像素运算的光栅位置。 |
readsource | glReadBuffer | 为像素选择颜色缓冲区源。 |
pixmode | glPixelStore,glPixelTransfer | 设置像素存储模式。设置像素传输模式。 |
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);