【发布时间】:2012-10-15 18:16:24
【问题描述】:
我目前正在将场景的深度渲染为纹理。我想在任何给定的点 x,y 上任意获取纹理的值。我尝试使用glReadPixels,但它似乎不起作用,而且它似乎也不是最佳解决方案。如果可能的话,我正在考虑一种直接从内存中读取纹理数据的方法。除了在帧缓冲区上实际渲染具有深度纹理的四边形之外,还有什么想法可以为任何给定的 x、y 获取该值?
顺便说一句,我在带有 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);
【问题讨论】:
-
请解释您是如何尝试使用 glReadPixels 的。例如显示一些代码。
标签: java android graphics 3d opengl-es-2.0