#include <stdio.h>
#include <GL/gl3w.h>
#include <SDL2/SDL.h>
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;
}