在Android的EGL的使用过程中,有时会遇到EGLConfig没有属性的问题。该问题的解决方法是在程序中添加以下代码:
int[] attrs = {
EGL_RED_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_BLUE_SIZE, 8,
EGL_DEPTH_SIZE, 16,
EGL_RENDERABLE_TYPE,
EGL_OPENGL_ES2_BIT,
EGL_NONE
};
int[] num_config = new int[1];
EGLConfig config = null;
eglChooseConfig(mEglDisplay, attrs, null, 0, num_config);
if (num_config[0] > 0) {
EGLConfig[] configs = new EGLConfig[num_config[0]];
eglChooseConfig(mEglDisplay, attrs, configs, num_config[0], num_config);
if (configs[0] != null) {
config = configs[0];
}
}
该代码会查询系统中所有支持OpenGL ES 2.0的EGLConfig属性,并选择一个最合适的EGLConfig。其中,EGL_RED_SIZE、EGL_GREEN_SIZE和EGL_BLUE_SIZE表示颜色深度,EGL_DEPTH_SIZE表示深度缓冲区的大小,EGL_RENDERABLE_TYPE表示支持的OpenGL ES版本。这样就可以解决EGLConfig没有属性的问题,让程序能正常运行。