anchor.diff:  (defvar *position-buffer-object*)
   
   
  -
   (defmethod initialize-instance :after ((w test-window) &key &allow-other-keys)
     ;; GL setup can go here; your GL context is automatically active,
     ;; and this is done in the main thread.
   
     ;; if you (setf (idle-render window) t) it'll call RENDER as fast as
  -  ;; possible when not processing other events; suitable for games
  +  ;; possible when not processing other events - suitable for games
     (setf (idle-render w) t)
     (gl:clear-color 0 0 1 1)
     (gl:clear :color-buffer-bit)
     (gl:viewport 0 0 800 600)
   
  +  ;; with culling
     (gl:enable :cull-face)
     (gl:cull-face :back)
     (gl:front-face :cw)
   
  +  
     ;; shader stuff
     (initialize-program)
   
  
positive.code: 
  (defmethod mousewheel-event ((window test-window) ts x y)
    (with-slots (rotation) window
      (incf *rotate-x* 0.2)
      (print (list x y))
      (render window))
    ;; (format t "Mousewheel-event issued ts:~a x:~x y:~y" ts x y)
    )
  
  (defmethod textinput-event ((window test-window) ts text) ;
    ;; (format t "You typed: ~S~%" text)
  
negative.code:   (setf *programs-dict* (load-shaders)))
  
  
  ;; to be understood while reading the LOAD-SHADER function
  ;; example: (uniform :vec :<name-of-uniform> <new-value>)
  (defgeneric uniform (type key value)
    (:method ((type (eql :vec)) key value)
      (uniformfv *programs-dict* key value))
    
    (:method ((type (eql :vec)) key value)
      (uniformfv *programs-dict* key value))
    
    (:method ((type (eql :mat)) key value)
      ;; nice, transpose is NIL by default!
      (uniform-matrix *programs-dict* key 4 value NIL)))
  
  
  ;; TODO: why specialize on SHADE
  
  
  ;;..............................................................................
  
  
  (defun initialize-gl-vao ()
    ())
  
  
  (defvar *vao* 0)
  (defun initialize-vao ()
  