2012-10-15 134 views
1

我目前正在渲染场景的纹理深度。我想在任何给定点x,y处任意获取纹理的值。我试图使用glReadPixels,但它似乎不起作用,它似乎也不是最佳解决方案。如果可能,我正在考虑直接从内存读取纹理数据的方法。除了实际渲染帧缓冲区上的深度纹理的四边形之外,是否有任何想法为任何给定的x,y获取该值?从OpenGL ES 2.0中的纹理读取

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

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); 
+0

请解释您是如何尝试使用glReadPixels的。举例说明一些代码。 –

回答

0

我想我只是要深度渲染到FBO和使用glReadPixel来获得深度值。