(bind-func gl_draw
  (lambda ()
    (glClear GL_COLOR_BUFFER_BIT)
    (let ((resloc (glGetUniformLocation sp "iResolution"))
          (timeloc (glGetUniformLocation sp "iGlobalTime"))
          (rateloc (glGetUniformLocation sp "iSampleRate")))
      (glUseProgram sp)
      (glUniform3f resloc (convert width) (convert height) 1.0)
      (glUniform1f timeloc (convert (% (clock_clock) 441000.)))
      (glUniform1f rateloc 44100.0))
    (VAO_bind_and_draw_arrays vao GL_TRIANGLE_STRIP 0 4)
    (glfwSwapBuffers window)
    void))