1

レンダリングされたピクセルの色を取得しようとしています。

gl.glColor3f(1f, 0, 0);
//draw
gl.glReadPixels(lastX - pw / 2, MyCanvas.this.getHeight()
            - (lastY - ph / 2), pw, ph, GL.GL_RED, GL.GL_FLOAT,
            pixelBuffer);
float r, g, b;
r = pixelBuffer.getFloat();
g = pixelBuffer.getFloat();
b =pixelBuffer.getFloat();
pixelBuffer.rewind();
System.out.println(r+" "+g+" "+b);

画面には真の真っ赤な色がありますが、glReadPixels は非常に奇妙な値 4.6006E-41 に戻ります。

4

2 に答える 2

7

glReadPixelsドキュメンテーションは言う:

GL_PACK_LSB_FIRST や GL_PACK_SWAP_BYTES など、glPixelStore によって設定されるストレージ パラメータは、データがメモリに書き込まれる方法に影響します。

したがって、glPixelStore構成を確認してください。つまり、バイト順が逆になっています。

0x0000803F => 4.600602988224807e-41
0x3F800000 => 1.0

便利なリンク:

于 2011-05-29T18:00:57.943 に答える
0

GL_RED の代わりに GL_RGB をフォーマットとして使用します。

于 2011-05-29T17:56:58.170 に答える