#include #include #include int main() { if (SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "Unable to initialize SDL"); return EXIT_FAILURE; } SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1); auto window = SDL_CreateWindow("GL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); if (!window) { fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError()); SDL_Quit(); return EXIT_FAILURE; } auto gl_context = SDL_GL_CreateContext(window); if (gl3wInit()) { fprintf(stderr, "Failed to initialize OpenGL\n"); return EXIT_FAILURE; } printf("OpenGL %s, GLSL %s\n", glGetString(GL_VERSION), glGetString(GL_SHADING_LANGUAGE_VERSION)); SDL_GL_SetSwapInterval(1); //Vsync glClearColor(0.5f, 0.5f, 0.5f, 1.0f); auto quit = false; SDL_Event event; while (!quit) { while (SDL_PollEvent(&event)) { if (event.type == SDL_QUIT) { quit = true; } } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); SDL_GL_SwapWindow(window); } return EXIT_SUCCESS; }