(bind-func gl_draw_loop
  (lambda (time:i64 delta_t:double)
    (gl_render peppino scene dome)
    ;; swap buffers
    (glfwPollEvents)
    (glfwSwapBuffers window)
    ;; set next frame callback
    (let ((next_time (+ time (convert (* 44100. delta_t)))))
      (callback next_time gl_draw_loop next_time delta_t))))