]> git.lizzy.rs Git - shadowclad.git/blobdiff - main.c
Exclude debugutil from build
[shadowclad.git] / main.c
diff --git a/main.c b/main.c
index cec65b9fef048f4a0603432c7841a9bddd1c0876..a64ca14ab11f6cf24647328d3f3c7ef59da29999 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,29 +1,64 @@
+#include <GL/glxew.h>
 #include <GL/glut.h>
 
-#include "debugutil.h"
-#include "glut_janitor.h"
-#include "render.h"
+//#include "debugutil.h"
 #include "level.h"
+#include "logger.h"
+#include "performance.h"
+#include "render.h"
+#include "ui.h"
 
 int main(int argc, char** argv) {
        glutInit(&argc, argv);
+       // glutInitContextVersion(4,5); TODO establish correct context
        
-       glutInitWindowSize(640, 480);
+       glutInitWindowSize(800, 600);
        
-       glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
+       glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
        glutCreateWindow(NULL);
        
-       glutSetWindowTitle(get_gl_info());
+       // glutSetWindowTitle(getGlInfoString());
+       glutSetWindowTitle("shadowclad");
+       
+       logInfo("OpenGL %s", (const char*) glGetString(GL_VERSION));
+       logInfo("GLSL %s", (const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));
+       logInfo("%s", (const char*) glGetString(GL_RENDERER));
        
-       glutDisplayFunc(render_scene);
-       glutReshapeFunc(resize_stage);
+       GLenum glewInitStatus = glewInit();
+       if (glewInitStatus != GLEW_OK) {
+               logError("GLEW init failed: %s", (const char*) glewGetErrorString(glewInitStatus));
+               return 1;
+       }
+       logInfo("GLEW %s", (const char*) glewGetString(GLEW_VERSION));
+       
+       if (GLXEW_EXT_swap_control) {
+               Display* display = glXGetCurrentDisplay();
+               GLXDrawable drawable = glXGetCurrentDrawable();
+               if (drawable) {
+                       glXSwapIntervalEXT(display, drawable, 1);
+               }
+               else {
+                       logWarning("Drawable is not here ¯\\_(ツ)_/¯");
+                       logWarning("Could not enable vsync (GLX_EXT_swap_control)");
+               }
+       }
+       else if (GLXEW_MESA_swap_control) {
+               glXSwapIntervalMESA(1);
+               log("Vsync enabled with GLX_MESA_swap_control, swap interval %d", glXGetSwapIntervalMESA());
+       }
+       else {
+               logWarning("Could not enable vsync (extensions not supported)");
+       }
+       
+       glutDisplayFunc(renderScene);
+       glutReshapeFunc(resizeStage);
        //glutKeyboardFunc(key_pressed);
        //glutMouseFunc(mouse_button_event);
        //glutMotionFunc(mouse_motion_event);
        
-       init_render();
-       
-       import_model("out/assets/wall01.3ds");
+       initRender();
+       initPerformanceMetering();
+       initLevel();
        
        glutMainLoop();
        return 0;