glReadPixels(Depth_Component)在Android OpenGL ES20中不起作用

时间:2011-06-10 07:32:02

标签: android opengl-es opengl-es-2.0 depth-buffer

我使用以下代码检索深度缓冲区:

FloatBuffer pixels = ByteBuffer
    .allocateDirect(4).order(ByteOrder.nativeOrder()).asFloatBuffer();

GLES20.glReadPixels(pointx, pointy, 1, 1, 
    GLES20.GL_DEPTH_COMPONENT16, GLES20.GL_FLOAT, pixels);

问题是,无论我要求什么点,像素都给我0.0;

我已在onSurfaceCreated中启用了以下内容:

GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
GLES20.glDepthFunc(GLES20.GL_LEQUAL);
GLES20.glDepthMask(true);
GLES20.glClearColor(1, 1, 1, 1);

我几天来一直在努力解决这个问题!请帮忙。

1 个答案:

答案 0 :(得分:4)

根据OpenGL ES 2.0文档,glReadPixels()不支持读取深度缓冲区。 glGetError()返回什么?