0
我用下面的代碼獲取深度緩衝:glReadPixels(Depth_Component)不是在Android的OpenGL的ES20工作
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);
我一直在這個問題掙扎了好幾天!請幫忙。
Thanks @Martin。我從來沒有注意到這個變化。那麼,不,geterror返回0;順便說一句,所以我怎樣才能從gles2讀取深度緩衝區? – xandy 2011-06-10 09:01:00
一個解決方案是做一個單獨的渲染過程,在這裏你使用着色器來填充具有深度值的顏色緩衝區。這是我以前在DirectX 9上必須要做的。 – 2011-06-10 09:09:27
另外,也許這可能有所幫助:http://stackoverflow.com/questions/4041682/android-opengl-es-framebuffer-objects-rendering-to-紋理 – 2011-06-10 09:14:40