我正在配置GLSurfaceView以使用 EGL_RECORDABLE_ANDROID 。 但是在渲染循环中,我在LogCat中得到了一个 EGL_BAD_ALLOC ,当然屏幕是黑色的。
我的第一个假设是,测试GPU( Adreno 220 )可能不支持此类标记,但egl报告支持配置。 到目前为止,任何其他经过测试的GPU模型都不会出现这个问题。
获取/测试EGLConfig的方法:
public EGLConfig chooseConfig(final EGL10 egl, final EGLDisplay display)
{
// OpenGL ES 2 bit. EGL14.EGL_OPENGL_ES2_BIT
final int EGL_OPENGL_ES2_BIT = 0x0004;
// Extension for surface record
final int EGL_RECORDABLE_ANDROID = 0x3142;
final int[] attribList = { EGL10.EGL_RED_SIZE, 8, //
EGL10.EGL_GREEN_SIZE, 8, //
EGL10.EGL_BLUE_SIZE, 8, //
EGL10.EGL_ALPHA_SIZE, 8, //
EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, //
EGL_RECORDABLE_ANDROID, 1, //
EGL10.EGL_NONE };
final EGLConfig[] configs = new EGLConfig[1];
final int[] numberConfigs = new int[1];
if (egl.eglChooseConfig(display, attribList, configs, configs.length, numberConfigs) == false)
{
return null;
}
return configs[0];
}