ピクセル操作の移植

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

  • 論理ピクセル操作は RGBA カラーバッファーには適用されません。 詳細については、「 glLogicOp」を参照してください。
  • 一般に、虹彩 GL では、ピクセルに ABGR という形式を使用しますが、OpenGL では RGBA が使用されます。 Glピクセルストアで形式を変更できます。
  • Lrectwrite 関数を移植する場合は、 lrectwrite が書き込んでいる場所 (たとえば、深度バッファーへの書き込み) に注意してください。

OpenGL を使用すると、ピクセル操作の柔軟性を高めることができます。 次の表は、ピクセル操作とそれに相当する OpenGL 関数の虹彩 GL 関数を示しています。

虹彩 GL 関数 OpenGL 関数 説明
lrectreadrectreadreadrgb
glReadPixels フレームバッファーからピクセルのブロックを読み取ります。
lrectwriterectwrite glDrawPixels フレームバッファーにピクセルのブロックを書き込みます。
rectcopy glCopyPixels フレームバッファー内のピクセルをコピーします。
rectzoom Glピクセルズーム GldrawpixelsglCopyPixels のピクセルズームファクターを指定します。
cmov glRasterPos ピクセル操作のラスター位置を指定します。
readsource glReadBuffer ピクセルのカラーバッファーソースを選択します。
pixmode glピクセル転送 ピクセルのストレージモードを設定します。ピクセル転送モードを設定します。
logicop glLogicOp ピクセル書き込みの論理演算を指定します。
Glenable (GL _ LOGIC _ OP) ピクセルロジック操作をオンにします。

使用可能な論理操作の完全な一覧については、「 glLogicOp」を参照してください。

この虹彩 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);