Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java glReadPixels返回错误的值_Java_Opengl_Jogl_Endianness_Glreadpixels - Fatal编程技术网

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为零。文档中没有说明这一点。