Skip to content

Instantly share code, notes, and snippets.

@rjungemann
Forked from jordandee/sdl2_opengl.cpp
Created November 18, 2018 01:11
Show Gist options
  • Save rjungemann/0f48c6240ab80f8e6f2ceaa51416550e to your computer and use it in GitHub Desktop.
Save rjungemann/0f48c6240ab80f8e6f2ceaa51416550e to your computer and use it in GitHub Desktop.

Revisions

  1. @jordandee jordandee created this gist Jan 18, 2016.
    70 changes: 70 additions & 0 deletions sdl2_opengl.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,70 @@
    // To compile with gcc: (tested on Ubuntu 14.04 64bit):
    // g++ sdl2_opengl.cpp -lSDL2 -lGL
    // To compile with msvc: (tested on Windows 7 64bit)
    // cl sdl2_opengl.cpp /I C:\sdl2path\include /link C:\path\SDL2.lib C:\path\SDL2main.lib /SUBSYSTEM:CONSOLE /NODEFAULTLIB:libcmtd.lib opengl32.lib

    #include <stdio.h>
    #include <stdint.h>
    #include <assert.h>
    #include <SDL2/SDL.h>
    #include <SDL2/SDL_opengl.h>
    #include <GL/gl.h>

    typedef int32_t i32;
    typedef uint32_t u32;
    typedef int32_t b32;

    #define WinWidth 1000
    #define WinHeight 1000

    int main (int ArgCount, char **Args)
    {

    u32 WindowFlags = SDL_WINDOW_OPENGL;
    SDL_Window *Window = SDL_CreateWindow("OpenGL Test", 0, 0, WinWidth, WinHeight, WindowFlags);
    assert(Window);
    SDL_GLContext Context = SDL_GL_CreateContext(Window);

    b32 Running = 1;
    b32 FullScreen = 0;
    while (Running)
    {
    SDL_Event Event;
    while (SDL_PollEvent(&Event))
    {
    if (Event.type == SDL_KEYDOWN)
    {
    switch (Event.key.keysym.sym)
    {
    case SDLK_ESCAPE:
    Running = 0;
    break;
    case 'f':
    FullScreen = !FullScreen;
    if (FullScreen)
    {
    SDL_SetWindowFullscreen(Window, WindowFlags | SDL_WINDOW_FULLSCREEN_DESKTOP);
    }
    else
    {
    SDL_SetWindowFullscreen(Window, WindowFlags);
    }
    break;
    default:
    break;
    }
    }
    else if (Event.type == SDL_QUIT)
    {
    Running = 0;
    }
    }

    glViewport(0, 0, WinWidth, WinHeight);
    glClearColor(1.f, 0.f, 1.f, 0.f);
    glClear(GL_COLOR_BUFFER_BIT);

    SDL_GL_SwapWindow(Window);
    }
    return 0;
    }