參考資訊:
https://pandorawiki.org/GLES
main.c
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <dlfcn.h> #include <unistd.h> #include <EGL/egl.h> #include <GLES2/gl2.h> int main(int argc, char** argv) { EGLint egl_major = 0; EGLint egl_minor = 0; EGLint num_configs = 0; EGLConfig configs = {0}; EGLDisplay display = EGL_NO_DISPLAY; EGLSurface surface = EGL_NO_SURFACE; EGLContext context = EGL_NO_CONTEXT; EGLint config_attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_RED_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_ALPHA_SIZE, 0, EGL_NONE }; EGLint window_attributes[] = { EGL_RENDER_BUFFER, EGL_BACK_BUFFER, EGL_NONE }; EGLint const context_attributes[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE, }; display = eglGetDisplay(EGL_DEFAULT_DISPLAY); eglInitialize(display, &egl_major, &egl_minor); eglChooseConfig(display, config_attribs, &configs, 1, &num_configs); surface = eglCreateWindowSurface(display, configs, 0, window_attributes); context = eglCreateContext(display, configs, EGL_NO_CONTEXT, context_attributes); eglMakeCurrent(display, surface, surface, context); printf("%s\n", glGetString(GL_VERSION)); eglMakeCurrent(display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); eglDestroyContext(display, context); eglDestroySurface(display, surface); eglTerminate(display); return 0; }
編譯、執行
$ gcc main.c -o main -lGLESv2 -lEGL $ ./main Version:OpenGL ES 2.0