summaryrefslogtreecommitdiff
path: root/util/ogl_renderer/c++/lbm_ogl_renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'util/ogl_renderer/c++/lbm_ogl_renderer.cpp')
-rw-r--r--util/ogl_renderer/c++/lbm_ogl_renderer.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/util/ogl_renderer/c++/lbm_ogl_renderer.cpp b/util/ogl_renderer/c++/lbm_ogl_renderer.cpp
new file mode 100644
index 0000000..b8b687d
--- /dev/null
+++ b/util/ogl_renderer/c++/lbm_ogl_renderer.cpp
@@ -0,0 +1,60 @@
+#include <kel/lbm/lbm.hpp>
+
+#include "state.hpp"
+
+namespace kel {
+namespace lbm {
+namespace sch {
+using namespace saw::schema;
+}
+
+}
+
+saw::error_or<void> lbm_main(int argc, char** argv){
+ auto eo_state = lbm::create_ogl_renderer();
+ if(eo_state.is_error()){
+ return std::move(eo_state.get_error());
+ }
+ auto& state = *(eo_state.get_value());
+
+ bool running{true};
+ while(running){
+ state.clear();
+ glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
+ SDL_GL_SwapWindow(state.window);
+
+ SDL_Event event;
+ while(SDL_PollEvent(&event)){
+ switch(event.type){
+ case SDL_EVENT_QUIT:
+ running = false;
+ break;
+ case SDL_EVENT_KEY_UP:
+ if(event.key.key== SDLK_ESCAPE){
+ running = false;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ return saw::make_void();
+}
+}
+
+int main(int argc, char** argv){
+ auto eov = kel::lbm_main(argc, argv);
+ if(eov.is_error()){
+ auto& err = eov.get_error();
+ std::cerr<<"[Error] "<<err.get_category();
+ auto err_msg = err.get_message();
+ if(err_msg.size() > 0u){
+ std::cerr<<" - "<<err_msg;
+ }
+ std::cerr<<std::endl;
+ return err.get_id();
+ }
+ return 0;
+}