§ Структура

Этот шаблон является просто пустой болванкой, программа которой ничего не делает, кроме как просто вызывает метод frame() для рисования пустого экрана.
Скачать шаблон в формате ZIP

§ Код main.cc

#include <SDL2/SDL.h>
#include <GL/gl.h>

void frame()
{
    glClearColor(0, 0, 0.2, 1);
    glClear(GL_COLOR_BUFFER_BIT);
}

int main(int argc, char** argv)
{
    SDL_Init(SDL_INIT_EVERYTHING);

    SDL_Window*     window;
    SDL_GLContext   context;
    SDL_Event       event;

    int wc  = SDL_WINDOWPOS_CENTERED;
    int wo  = SDL_WINDOW_OPENGL;
    window  = SDL_CreateWindow("OpenGL World", wc, wc, 1280, 800, wo);
    context = SDL_GL_CreateContext(window);

    uint32_t pticks = 0;

    for (;;) {

        while (SDL_PollEvent(& event) != 0) {

            if (event.type == SDL_QUIT) {
                SDL_GL_DeleteContext(context);
                SDL_DestroyWindow(window);
                return 0;
            }
        }

        Uint32 nticks = SDL_GetTicks();

        // Обновление 60 раз в секунду
        if (nticks - pticks >= 16) {
            pticks = nticks; frame();
            SDL_GL_SwapWindow(window);
        } else {
            SDL_Delay(1);
        }
    }
}

§ makefile/main.cc

all:
	g++ main.cc -lSDL2 -lGL -o main
	./main