Java 我怀疑glReadPixel没有';t返回正确的深度值。为什么?

Java 我怀疑glReadPixel没有';t返回正确的深度值。为什么?,java,opengl,jogl,glreadpixels,Java,Opengl,Jogl,Glreadpixels,在我的程序中,我在画布上加载了一个网格模型,并最初使用glReadPixels读取其深度值 此代码在显示函数中的gl.glFlush()之后编写: FloatBuffer depth_mann = FloatBuffer.allocate(width*height); 稍后,我访问了将在glUnproject中使用的深度值,并将结果z值指定给一组顶点,并添加了偏移量,这些顶点将位于网格模型的顶部。有点高。换句话说,我试图得到一个通货膨胀函数。然而,并不是所有的顶点都被提升,经过一点测试,gl

在我的程序中,我在画布上加载了一个网格模型,并最初使用glReadPixels读取其深度值

此代码在显示函数中的gl.glFlush()之后编写:

FloatBuffer depth_mann = FloatBuffer.allocate(width*height);

稍后,我访问了将在glUnproject中使用的深度值,并将结果z值指定给一组顶点,并添加了偏移量,这些顶点将位于网格模型的顶部。有点高。换句话说,我试图得到一个通货膨胀函数。然而,并不是所有的顶点都被提升,经过一点测试,glReadPixels返回的深度值并不总是相同的


现在,我正试着在四天内找出问题所在,但我认为是时候寻求帮助了。我觉得有些事情我应该知道,但我不知道,你在填补这些缺失的部分将不胜感激。提前谢谢

小心使用floatbuffers,确保它们使用
nativeOrder
或通过
GLBuffers分配它们。newDirectFloatBuffer
我建议您看看这个示例:深度值不是线性分布的,几年前我修复了引用示例中的一个错误。我也有类似的问题。
gl.glPixelStorei(GL2.GL_PACK_ROW_LENGTH, width);
gl.glPixelTransferf(GL2.GL_DEPTH_SCALE, 1.0f);
gl.glPixelTransferf(GL2.GL_DEPTH_BIAS, 0.f); 
gl.glReadPixels(0, 0, width, height, GL2.GL_DEPTH_COMPONENT, GL2.GL_FLOAT, depth_mann);