ピクセル操作の移植

ピクセル操作を伴うコードを移植する場合は、次の点に注意してください。

  • 論理ピクセル操作は、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 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);