+ (gl:bind-buffer :array-buffer *buffer-id*)
+ (%gl:buffer-data :array-buffer
+ (* float-size
+ 4 ; vertices per sprite
+ 4 ; components per vertice
+ obj-num)
+ (cffi:null-pointer) :stream-draw)
+ (gl:with-mapped-buffer
+ (p :array-buffer :write-only)
+ (let ((*ptr* p) (*offset* 0))
+ (draw *current-room*)))
+ (%gl:tex-coord-pointer 2 :float
+ (* 4 ; components per vertex
+ float-size)
+ (cffi:null-pointer))
+ (%gl:vertex-pointer 2 :float
+ (* 4 ; components per vertex
+ (cffi::foreign-type-size :float))
+ (cffi:make-pointer (* 2
+ float-size)))
+ (gl:enable-client-state :texture-coord-array)
+ (gl:enable-client-state :vertex-array)
+ (gl:bind-texture :texture-2d *spritesheet-id*)
+ (%gl:draw-arrays :quads 0 (* 4 obj-num))
+ (gl:disable-client-state :vertex-array)
+ (gl:disable-client-state :texture-coord-array)