我已经花了几个小时试图让深度缓冲区工作,但没有运气。初始化代码:
class MyGLSurfaceView extends GLSurfaceView {
public BasicGLSurfaceView(Context context) {
super(context);
[...]
setEGLContextClientVersion(2);
setEGLConfigChooser(8, 8, 8, 8, 16, 0);
[...]
m_rend = new ViewRenderer(context, m_app);
setRenderer(m_rend);
}
渲染函数如下所示:
public void Render() {
[...]
GLES20.glClearColor(m_backColor.x(), m_backColor.y(), m_backColor.z(), 1.0f);
GLES20.glClearDepthf(1.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
[...]
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glDepthFunc(GLES20.GL_LEQUAL);
GLES20.glDepthMask(true);
GLES20.glDepthRangef(m_depthNear, m_depthFar);
[...]
[...rendering...]
}
我假设有两件事可能是错误的:首先是深度缓冲区没有成功初始化,但是 setEGLConfigChooser 没有返回错误,其次是我错误地设置了渲染状态。我的代码有什么问题?
顺便提一句。我已经让它在我的 NativeActivity 项目中工作,但我不能在 java 中做同样的事情:(
提前致谢!