;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; OpenGL Basic Example
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define *gl* (gl:make-opengl))
(gl:open-opengl *gl* '(200 200 640 480))
(define init
(lambda ()
(gl:clear-color *gl* 0.0 0.0 0.0 0.0)
(gl:enable *gl* *gl:depth-test*)))
(define view
(lambda ()
(gl:viewport *gl* 0 0 640 480)
(gl:matrix-mode *gl* *gl:projection*)
(gl:load-identity *gl*)
(glu:perspective *gl* 40.0 (/ 640 480) 1.0 10.0)
(gl:matrix-mode *gl* *gl:modelview*)))
(define draw
(lambda (angle)
(gl:clear *gl* (io:binary-or *gl:depth-buffer-bit* *gl:color-buffer-bit*))
(gl:load-identity *gl*)
(glu:look-at *gl* 0 0 5 0 0 0 0 1 0)
(gl:push-matrix *gl*)
(gl:rotate *gl* angle 1.0 1.0 1.0)
(glut:wire-cube *gl* 1.0)
(gl:pop-matrix *gl*)
(gl:flush *gl*)
(callback (+ (now) 5000) 'draw (fmod (+ angle 5) 360))))
(init)
(view)
(draw 0)