(import chicken scheme) (use (prefix glfw3 glfw:) (prefix opengl-glew gl:) gl-math gl-utils) (define *vertex* #<gl (mesh-mode rect)) (mesh-n-indices rect) (type->gl (mesh-index-type rect)) #f 0) (check-error) (gl:bind-vertex-array 0)) (glfw:with-window (640 480 "Example" resizable: #f context-version-major: 3 context-version-minor: 3) (glfw:init) (print (gl:is-supported? "GL_ARB_framebuffer_object")) (set! *vertex* (make-shader gl:+vertex-shader+ *vertex*)) (set! *fragment* (make-shader gl:+fragment-shader+ *fragment*)) (program (make-program (list *vertex* *fragment*))) (mesh-make-vao! rect `((position . ,(gl:get-attrib-location (program) "position")) (color . ,(gl:get-attrib-location (program) "color")))) (let loop () (glfw:swap-buffers (glfw:window)) (gl:clear (bitwise-ior gl:+color-buffer-bit+ gl:+depth-buffer-bit+)) (render) (glfw:poll-events) ; Because of the context version, initializing GLEW results in a harmless invalid enum (unless (glfw:window-should-close (glfw:window)) (loop))))