Java 在OpenGL ES 2.0中读取纹理

Java 在OpenGL ES 2.0中读取纹理,java,android,graphics,3d,opengl-es-2.0,Java,Android,Graphics,3d,Opengl Es 2.0,我当前正在将场景的深度渲染为纹理。我想得到任意给定点x,y的纹理值。我尝试使用glReadPixels,但它似乎不起作用,而且似乎也不是最佳解决方案。如果可能的话,我正在考虑一种直接从内存中读取纹理数据的方法。除了在帧缓冲区上实际渲染具有深度纹理的四边形外,是否还想为任何给定的x,y获取该值 顺便说一下,我在Android上使用Java和OpenGL ES 2.0 GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING, mainBufferHand

我当前正在将场景的深度渲染为纹理。我想得到任意给定点x,y的纹理值。我尝试使用
glReadPixels
,但它似乎不起作用,而且似乎也不是最佳解决方案。如果可能的话,我正在考虑一种直接从内存中读取纹理数据的方法。除了在帧缓冲区上实际渲染具有深度纹理的四边形外,是否还想为任何给定的x,y获取该值

顺便说一下,我在Android上使用Java和OpenGL ES 2.0

GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_BINDING, mainBufferHandle, 0);
if(mainBufferHandle[0] < 0) mainBufferHandle[0] = 0;

GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, depthBufferHandle[0]);

GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_DEPTH_ATTACHMENT, GLES20.GL_TEXTURE_2D, depthTextureHandle[0], 0);

GLES20.glReadPixels(x, y, 1, 1, GLES20.GL_RGB, GLES20.GL_FLOAT, floatBuffer);
GLES20.glGetIntegerv(GLES20.GL_FRAMEBUFFER_绑定,mainBufferHandle,0);
如果(mainBufferHandle[0]<0)mainBufferHandle[0]=0;
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER,depthBufferHandle[0]);
GLES20.glFramebufferTexture2D(GLES20.GL_帧缓冲区,GLES20.GL_深度附件,GLES20.GL_纹理2D,深度纹理句柄[0],0);
GLES20.glReadPixels(x,y,1,1,GLES20.GL_RGB,GLES20.GL_FLOAT,floatBuffer);

我想我只是将深度渲染到FBO,然后使用
glReadPixel
来获得深度值。

请解释如何尝试使用glReadPixels。例如,显示一些代码。