Java glReadPixels返回错误的值
我尝试获得渲染像素的颜色Java glReadPixels返回错误的值,java,opengl,jogl,endianness,glreadpixels,Java,Opengl,Jogl,Endianness,Glreadpixels,我尝试获得渲染像素的颜色 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
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,为什么??使用GL_RGB而不是GL_红色作为格式。使用GL_RGB而不是GL_红色作为格式。说: glPixelStore设置的存储参数,如GL_PACK_LSB_FIRST和GL_PACK_SWAP_字节,会影响数据写入内存的方式 因此,请检查您的
glPixelStore
配置。也就是说,您的字节顺序是向后的
0x0000803F => 4.600602988224807e-41
0x3F800000 => 1.0
有用链接:
- 说:
glPixelStore设置的存储参数,如GL_PACK_LSB_FIRST和GL_PACK_SWAP_字节,会影响数据写入内存的方式
因此,请检查您的
glPixelStore
配置。也就是说,您的字节顺序是向后的
0x0000803F => 4.600602988224807e-41
0x3F800000 => 1.0
有用链接:
GL.GL\u red
后可以得到红色、绿色和蓝色吗?缓冲区实际上可以保存所有三个值,但只存储红色,其他g和b为零这不是文档中所说的。您确定可以得到红色、绿色、,在您传入GL.GL\u RED
后,会显示为蓝色。实际上,缓冲区可以保存所有三个值,但只存储红色,其他g和b为零。文档中没有说明这一点。