;; standard impromptu callback
(define opengl-loop
  (lambda (time dur model1 model2 model3 degree)
    (let ((v (now)))
      (gl_render model1 model2 model3 degree)
      (gl:swap-buffers glctx)
      )
    (callback (+ time (* dur .1)) 'opengl-loop (+ time dur) dur model1 model2 model3 (+ degree .5))))