java - 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.getFloat();
b =pixelBuffer.getFloat();
pixelBuffer.rewind();
System.out.println(r+" "+g+" "+b);

屏幕上出现了真正的纯红色,但是glReadPixels返回的r值很奇怪4.6006E-41,为什么???

最佳答案

glReadPixels documentation说:

Storage parameters set by glPixelStore, such as GL_PACK_LSB_FIRST and GL_PACK_SWAP_BYTES, affect the way that data is written into memory.

因此请检查您的glPixelStore 配置。也就是说,您的字节顺序是向后的。

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

有用的链接:

关于java - glReadPixels 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169378/

相关文章:

java - FTP:启动文件传输后何时发送代码 226?

java - 审计 JBossAS5 上的 JDBC 执行

Java-Pong AI 不动

java - 如何使用面向对象设计实现图搜索(DFS)

python - Pyglet 中的比例分辨率

即使使用GL_NEAREST(GL_TEXTURE_2D),OpenGL仍会尝试模糊

opengl - glsl double 顶点缓冲区

java - 无法安装 Java OpenGL 库

java - 我的 JOGL 相机旋转而不是左右看

java - 在 Java 中从文件加载纹理时出错