如果您可以使用默认的 EGLContextFactory 和 EGLConfigChooser,则可以使用 GLSurfaceView 的setEGLContextClientVersion()方法。
否则,如果您正在编写自己的EGLContextFactory和EGLConfigChooser,只需自己定义常量。在配置选择器中,定义
private static final int EGL_OPENGL_ES2_BIT = 4;
然后将其作为 EGL_RENDERABLE_TYPE 的值传递给 eglChooseConfig,以及您想要的其他属性:
int attribs[] = {
EGL10.EGL_RED_SIZE, mRedSize,
EGL10.EGL_GREEN_SIZE, mGreenSize,
EGL10.EGL_BLUE_SIZE, mBlueSize,
EGL10.EGL_ALPHA_SIZE, mAlphaSize,
EGL10.EGL_DEPTH_SIZE, mDepthSize,
EGL10.EGL_SAMPLE_BUFFERS, mSampleBuffers,
EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL10.EGL_NONE
};
对于上下文工厂,定义
private static final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
并在创建上下文时使用它:
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig)
{
int[] attrib_list = {
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL10.EGL_NONE
};
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
return context;
}
编写完这些后,将它们分别传递给setEGLContextFactory和setEGLConfigChooser。