;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; OpenGL Basic Lissajous 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:clear-accum *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 50.0)
(gl:matrix-mode *gl* *gl:modelview*)))
(define draw
(lambda (time)
(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:begin *gl* *gl:points*)
(gl:color *gl* 0.0 1.0 0.0 1.0)
(gl:vertex *gl*
(sin (* 1.0 pi (/ time 200000)))
(sin (* 2.2 pi (/ time 200000))))
(gl:vertex *gl*
(* .5 (sin (* 1.0 pi (/ time 200000))))
(* .5 (sin (* 2.2 pi (/ time 200000)))))
(gl:end *gl*)
(gl:accum *gl* *gl:accum* 1.0)
(gl:accum *gl* *gl:mult* .9999999999)
(gl:accum *gl* *gl:return* 1.0)
(gl:flush *gl*)
(callback (+ time 1000) 'draw (+ time 2000))))
(init)
(view)
(draw (now))