0

OpenGLとJOGLでフレームバッファをいじっています。描画する Graphics オブジェクトがあります。

Graphics が変更されるたびに、R、G、B、および A の情報を各ピクセルのバイトとして抽出し、ARGB の順序で ByteBuffer に書き込みます。変換を確認しましたが、問題ありません。

GL_RGB モードを使用して drawPixels メソッドを呼び出すと、指定された座標にボックスが描画されます。グラフィックに含まれる色に関係なく、黒で描画されます。GL_RGBA モードを使用すると、何も描画されません。

したがって、フレームバッファ操作のコードでは、ib1 は画像データを含むバイト バッファです。

    GL gl=canvas.getGL();

    gl.glMatrixMode(GL.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrtho (0, canvas.getWidth(), canvas.getHeight(),0, -1.0, 1.0);
    gl.glMatrixMode(GL.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glDisable(GL.GL_DEPTH_TEST);
    gl.glColor3f(1, 1, 1);
    //
    gl.glRasterPos2i(0, height);
    //gl.glDrawPixels(width, height, GL.GL_RGB, GL.GL_BYTE, ib1);
    gl.glDrawPixels(width, height, GL.GL_RGBA, GL.GL_BYTE, ib1);

よろしくお願いいたします。

4

1 に答える 1

0

問題は、OpenGL が期待するピクセル データの形式でした。

私の出力は整数の配列で、RGBA の 4 つのシングルバイト値に分割できました。ただし、OpenGL はそれらが符号付き形式であることを想定しているため、01111111 が最高値、10000000 が最低値です。Graphics2D オブジェクトからの Java 出力は署名されていないため、値は 00000000 (最低) から 11111111 までです。数ビットの操作の後、現在は機能しています。

于 2011-02-06T15:13:25.057 に答える