anchor.diff:    (unless %texture-chosen%
       (gl:bind-texture :texture-2d (aref *char-textures* (char-code #\?))))
    ; (print-vars entity)
  -  (gl:with-pushed-matrix 
  +  (gl:with-pushed-matrix
      ; (gl:scale (size-x thing) (size-y thing) 1)
       (gl:rotate (rot thing) 0 0 1)
       (gl:scale (size-x thing) (size-y thing) 1)
       (draw-quad)))
   
   (defmethod draw ((rectangle rectangle)) ;todo: no copypaste :)
  -  (gl:with-pushed-matrix 
  +  (gl:with-pushed-matrix
       (gl:rotate (rot rectangle) 0 0 1)
       (gl:scale (size-x rectangle) (size-y rectangle) 1)
       (destructuring-bind (r g b a) (color rectangle)
  
positive.code:     (draw  *selection-rectangle*)))
  
  (defun bind-texture (thing identifier use-shader)
    
    (let ((texture (if (or
                        (not (owned thing))
                        (symbolp (owner thing)))
                       (gethash identifier *textures*) ;does not belong to a real player
                     (gethash identifier (textures (owner thing))))))
      (when texture
        (gl:active-texture 0)
        (gl:bind-texture :texture-2d texture)
        (when use-shader
          (gl:uniformi (gl:get-uniform-location *current-shader* "base-texture") 0)))
        
      texture))
    ;|#())
  
  
negative.code:                                         ;(format t "~a ~%" (gl:get-shader-info-log vertex-shader))
  
                                          ;(format t "~a ~%" (gl:get-shader-info-log fragment-shader))
  
        (gl:attach-shader program vertex-shader)
        (gl:attach-shader program fragment-shader)
  
        (gl:link-program program)
  
        (format t "~a~%" (gl:get-program-info-log program))
                                          ;(gl:use-program program)
        (setf (getf *shaders* name) program))))
  