【发布时间】:2014-10-14 11:38:56
【问题描述】:
我有一个三星 Galaxy Tab 3 (Android 4.2.2),深度缓冲区似乎不起作用。任何其他设备都可以。我按如下方式创建上下文:
setEGLContextClientVersion(2);
setEGLConfigChooser(new MultisampleConfigChooser(...));
// ...
@Override
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
mValue = new int[1];
// Try to find a normal multisample configuration first.
int[] configSpec = {
EGL10.EGL_RED_SIZE, 5,
EGL10.EGL_GREEN_SIZE, 6,
EGL10.EGL_BLUE_SIZE, 5,
EGL10.EGL_DEPTH_SIZE, 16,
// Requires that setEGLContextClientVersion(2) is called on the view.
EGL10.EGL_RENDERABLE_TYPE, 4 /* EGL_OPENGL_ES2_BIT */,
EGL10.EGL_SAMPLE_BUFFERS, (!mDisableMultisampling ? 1 : 0)/* true */,
EGL10.EGL_SAMPLES, (!mDisableMultisampling ? 2 : 0),
EGL10.EGL_STENCIL_SIZE, 8,
EGL10.EGL_NONE
};
if (!egl.eglChooseConfig(display, configSpec, null, 0, mValue)) {
// ...
}
...
}
我尝试了以下方法:
- 禁用多重采样(无效)
- 使用 24 位深度(无效)
- glGet(GL_DEPTH_BITS) = 16
- glIsEnabled(GL_DEPTH_TEST) = true
- glGet(GL_DEPTH_FUNC) = GL_LESS
- glGet(GL_DEPTH_WRITEMASK) = 1
- glGetString(GL_RENDERER) = gc1000 核心
投影矩阵没问题(该程序可以在任何其他 Android 设备上运行,也可以在 iOS 上运行)。
什么可能导致问题?
【问题讨论】:
-
它返回什么配置?它真的有 deph 缓冲区吗?另外,您是否尝试过请求不带
EGL_SAMPLE_BUFFERS和EGL_SAMPLES的配置? -
试过了,没有效果:(如何检查是否有深度缓冲区?
标签: android opengl-es-2.0 depth-buffer