我在Google上的应用程序在客户设备上造成了这个错误(但不是在我的测试设备上,也不是在谷歌发布前的报告设备上)。
EGL_BAD_CONFIG (无效的EGL帧缓冲区配置)
执行此调用时:eglCreateContext( display, config, NULL, contextAttribs );
我传递的属性:
const EGLint contextAttribs[] =
{
EGL_CONTEXT_CLIENT_VERSION, 3,
EGL_NONE
};成功检索到的显示如下:
EGLDisplay display = eglGetDisplay( EGL_DEFAULT_DISPLAY );使用以下属性成功地使用:eglChooseConfig()检索了配置.
const EGLint attribs[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_DEPTH_SIZE, withDepthBuffer ? 16 : 0,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_NONE
};如果没有匹配,则...and这些回退属性:
const EGLint attribs_fallback[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_DEPTH_SIZE, 16,
EGL_BLUE_SIZE, 5,
EGL_GREEN_SIZE, 6,
EGL_RED_SIZE, 5,
EGL_NONE
};在首选配置或后备配置的eglChooseConfig()之后,匹配的numConfigs至少为1。
另外,前面对eglCreateWindowSurface()的调用也成功了。
这包括:
EGL VENDOR:Android
EGL 版本:1.4Androidmeta-EGL
是什么导致一些设备在eglCreateContext()调用上失败?
如果它是无效的,为什么eglChooseConfig返回违规的配置?
发布于 2019-02-15 04:36:12
需要更多信息。查询您所选择的配置的所有属性-打印出来,看看是否有什么有趣的地方。
我同意Bram,您可能选择一个ES2配置,然后需要ES3上下文。
发布于 2019-09-27 08:10:32
很可能与您不再相关,但我也遇到了同样的问题,并在这里发布了我的修复程序,以防其他人将来也会遇到这个问题:
就像stonesthrow说的&您怀疑配置是ES2而不是ES3,这导致了不兼容性。把EGL_RENDERABLE_TYPE从EGL_OPENGL_ES2_BIT改为EGL_OPENGL_ES3_BIT对我有帮助。
https://stackoverflow.com/questions/54384243
复制相似问题