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返回到r很奇怪的值4.6006E-41,为什么???

4

2 回答 2

7

glReadPixels文档说:

glPixelStore 设置的存储参数,例如 GL_PACK_LSB_FIRST 和 GL_PACK_SWAP_BYTES,会影响数据写入内存的方式。

所以检查你的glPixelStore配置。也就是说,您的字节顺序是向后的。

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

有用的链接:

于 2011-05-29T18:00:57.943 回答
0

使用 GL_RGB 而不是 GL_RED 作为格式。

于 2011-05-29T17:56:58.170 回答