| EGLNativeWindowType window = ...; //OS Window handle | |
| eglBindAPI(EGL_OPENGL_API); | |
| const EGLint attribs[] = { | |
| EGL_SURFACE_TYPE, EGL_WINDOW_BIT, | |
| EGL_DEPTH_SIZE, 8, | |
| EGL_BLUE_SIZE, 8, | |
| EGL_GREEN_SIZE, 8, | |
| EGL_RED_SIZE, 8, | |
| EGL_NONE }; | |
| EGLint format; | |
| EGLint numConfigs; | |
| EGLConfig config; | |
| EGLSurface surface; | |
| EGLContext context; | |
| EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY); | |
| eglInitialize(display, 0, 0); | |
| /* Here, the application chooses the configuration it desires. In this | |
| * sample, we have a very simplified selection process, where we pick | |
| * the first EGLConfig that matches our criteria */ | |
| eglChooseConfig(display, attribs, &config, 1, &numConfigs); | |
| /* EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is | |
| * guaranteed to be accepted by ANativeWindow_setBuffersGeometry(). | |
| * As soon as we picked a EGLConfig, we can safely reconfigure the | |
| * ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID. */ | |
| eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format); | |
| surface = eglCreateWindowSurface(display, config, window, NULL); | |
| const EGLint contextAttr[] = { | |
| EGL_CONTEXT_CLIENT_VERSION, 3, | |
| EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT, | |
| EGL_CONTEXT_FLAGS_KHR, EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR, | |
| EGL_NONE | |
| }; | |
| context = eglCreateContext(display, config, EGL_NO_CONTEXT, contextAttr); | |
| if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) { | |
| LOGW("Unable to eglMakeCurrent"); | |
| return -1; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment