     (.clear gl (bit-or (.-COLOR_BUFFER_BIT gl) (.-DEPTH_BUFFER_BIT gl)))
     (let [image (js/Image.)]
       (aset image "onload"
-            (fn [] (let [texture {:data {:data       image
-                                        :filter     {:min :linear
-                                                     :mag :nearest}
-                                        :flip-y     true
-                                        :texture-id 0}}]
+            (fn [] (let [texture {:data       image
+                                 :filter     {:min :linear
+                                              :mag :nearest}
+                                 :flip-y     true
+                                 :texture-id 0}]
                     (animate (draw-fn gl driver program) tick (assoc-in state [:scene :texture] texture)))))
       (aset image "src" "/images/crate.gif"))))

                   (geom/translate [x 0 -7])
                   (geom/rotate-around-axis [1 0 0] cube-rotation)
                   (geom/rotate-around-axis [0 -1 0] cube-rotation))]
        (driver/draw-elements driver program
                          (assoc (get-data p mv cube-vertices cube-normals texture cube-texture-coords)
                            {:tag :element-index} cube-indices)
                          {:draw-mode :triangles
                           :first 0
                           ;; Hard-coded
                           :count 36})))))  

(defn animate [draw-fn step-fn current-value]
  (js/requestAnimationFrame

  (let [width     (.-clientWidth node)
        height    (.-clientHeight node)
        driver    (driver/basic-driver gl)
        program   program-source
        state (app-state width height)]
    (reset-gl-canvas! node)
    (.enable gl (.-DEPTH_TEST gl))
