compileargs ::= -g -Wall -Wextra -Wpedantic
linkargs ::=
-libraries ::= -L/usr/local/lib -lGL -lglut -lassimp
+libraries ::= -L/usr/local/lib -lGL -lGLEW -lglut -lassimp
# Prefix all object file names with the compilation directory
objects ::= $(addprefix out/, \
main.o debugutil.o glut_janitor.o render.o \
+#include <GL/glxew.h>
#include <GL/glut.h>
+#include <stdio.h>
#include "debugutil.h"
#include "glut_janitor.h"
int main(int argc, char** argv) {
glutInit(&argc, argv);
+ // glutInitContextVersion(4,5); TODO establish correct context
glutInitWindowSize(800, 600);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
+ glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutCreateWindow(NULL);
glutSetWindowTitle(getGlInfoString());
+ GLenum glewInitStatus = glewInit();
+ if (glewInitStatus != GLEW_OK) {
+ fprintf(stderr, "GLEW init failed: %s\n", glewGetErrorString(glewInitStatus));
+ return 1;
+ }
+ printf("GLEW %s\n", glewGetString(GLEW_VERSION));
+
+ if (GLXEW_EXT_swap_control) {
+ Display* display = glXGetCurrentDisplay();
+ GLXDrawable drawable = glXGetCurrentDrawable();
+ if (drawable) {
+ glXSwapIntervalEXT(display, drawable, 1);
+ }
+ else {
+ fprintf(stderr, "Drawable is not here\n");
+ }
+ }
+ else if (GLXEW_MESA_swap_control) {
+ glXSwapIntervalMESA(1);
+ printf("Swap interval %d\n", glXGetSwapIntervalMESA());
+ }
+ else {
+ fprintf(stderr, "Could not enable vsync\n");
+ }
+
glutDisplayFunc(renderScene);
glutReshapeFunc(resizeStage);
//glutKeyboardFunc(key_pressed);