我无法获得深度缓冲Android上的OpenGL ES 2.0的正常工作。 不管我做什么,对象总是呈现在给定的顺序,完全忽略了深度缓冲。
从我读过,默认的设置应该有一个深度缓冲,但我仍然尝试我能想到得到它的工作的各项功能:
//setup
setEGLContextClientVersion(2);
setEGLConfigChooser( true );
GLES20.glEnable( GLES20.GL_DEPTH_TEST );
GLES20.glDepthFunc( GLES20.GL_LEQUAL );
GLES20.glDepthMask( true );
//render
GLES20.glClearColor(0.8f, 0.5f, 0.8f, 1.0f);
GLES20.glClearDepthf(1.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
我将物体在0.5,0.0,-0.5在z轴。 我可以验证这工作,因为如果我使用的透视图,将正确地改变对象的大小(遥远的要小) - 我的顶点着色器不只是应用视图矩阵。 如果我是正确的,我不能改变在片段着色器的深度ES可言,所以不能错。
我难倒。 我真的不知道我可以检查什么。 每个搜索怎么办?(在网上,或在这里)给出了似乎并没有解决这个问题(尽管它表明人们有其他原因的问题)的答案。 在ES 2.0的大多数例子实际上并不具备足够的对象来测试深度缓存,所以我不能肯定的示例代码是正确的要么。
发表评论:我的“设置”部分只需要打一个电话到“超级”我的派生GLSurfaceView内后,之前设置的渲染器调用。 在“渲染”部分首先叫我renderes内部“onDrawFrame”。