(import chicken scheme) (use (prefix glfw3 glfw:) (prefix opengl-glew gl:) gl-math gl-utils) (define *vertex* #<gl-type ushort:) #f 0) (gl:check-error) (gl:bind-vertex-array 0)) (glfw:with-window (640 480 "Example" resizable: #f context-version-major: 3 context-version-minor: 3) (gl:init) (print (gl:supported? "GL_ARB_framebuffer_object")) (set! *vertex* (gl:make-shader gl:+vertex-shader+ *vertex*)) (set! *fragment* (gl:make-shader gl:+fragment-shader+ *fragment*)) (program (gl:make-program (list *vertex* *fragment*))) (vao (make-vao vertex-data index-data `((,(gl:get-attrib-location (program) "vertex") float: 2) (,(gl:get-attrib-location (program) "color") float: 3)))) (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))))