// gcc example/c/gl_sdl2.c build/src/gl.c -Ibuild/include `sdl2-config --libs --cflags` -ldl #include #include #include #include #include const GLuint WIDTH = 800, HEIGHT = 600; int main(void) { // code without checking for errors SDL_Init(SDL_INIT_VIDEO); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_Window *window = SDL_CreateWindow( "[glad] GL with SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN ); SDL_GLContext context = SDL_GL_CreateContext(window); int version = gladLoadGL((GLADloadfunc) SDL_GL_GetProcAddress); printf("GL %d.%d\n", GLAD_VERSION_MAJOR(version), GLAD_VERSION_MINOR(version)); int exit = 0; while(!exit) { SDL_Event event; while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: exit = 1; break; case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) { exit = 1; } break; default: break; } } glClearColor(0.7f, 0.9f, 0.1f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); SDL_GL_SwapWindow(window); SDL_Delay(1); } SDL_GL_DeleteContext(context); SDL_DestroyWindow(window); SDL_Quit(); return 0; }