+ 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);