diff --git a/Rakefile.rb b/Rakefile.rb index 02dff3c..5254fab 100644 --- a/Rakefile.rb +++ b/Rakefile.rb @@ -3,10 +3,12 @@ require "rscons" task :default do Rscons::Environment.new do |env| env.build_root = "build" + env.parse_flags!("!sdl2-config --cflags --libs") env["CXXFLAGS"] += %w[-isystem oglplus/include] env["CPPDEFINES"] += %w[ OGLPLUS_NO_SITE_CONFIG ] + env["LIBS"] << %w[GL] sources = Dir["*.cc"] env.Program("app", sources) end diff --git a/main.cc b/main.cc index 59664d8..e304548 100644 --- a/main.cc +++ b/main.cc @@ -1,6 +1,63 @@ +#include #include "oglplus/gl.hpp" +#define WIDTH 800 +#define HEIGHT 600 + +static void init(); +static void display(SDL_Window * window); + int main(int argc, char * argv[]) { + if (SDL_Init(SDL_INIT_VIDEO)) + { + printf("Failed to initialize SDL!\n"); + return 1; + } + + atexit(SDL_Quit); + + SDL_Window * window = SDL_CreateWindow("OGLplus example", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + WIDTH, + HEIGHT, + SDL_WINDOW_OPENGL); + if (!window) + { + printf("Failed to create window!\n"); + SDL_Quit(); + return 1; + } + + SDL_GLContext gl_context = SDL_GL_CreateContext(window); + + init(); + display(window); + + SDL_Event event; + while (SDL_WaitEvent(&event)) + { + if (event.type == SDL_QUIT) + break; + else if (event.type == SDL_KEYDOWN) + { + if (event.key.keysym.sym == SDLK_ESCAPE) + break; + if (event.key.keysym.sym == SDLK_RETURN) + display(window); + } + } + return 0; } + +static void init() +{ +} + +static void display(SDL_Window * window) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + SDL_GL_SwapWindow(window); +}