(bind-func gl_draw_loop
  (lambda (time:i64 delta_t:double)
    (glClear GL_COLOR_BUFFER_BIT)
    (glUseProgram sp)
    (glBindVertexArray vao)
    (glDrawArrays GL_TRIANGLES 0 3)
    (glfwPollEvents)
    (glfwSwapBuffers window)
    (let ((next_time (+ time (convert (* 44100. delta_t)))))
      (callback next_time gl_draw_loop next_time delta_t))))