anchor.diff:  		     ;; the suffix of the format represent the data type:
   		     ;; here: f = float
   		     ;; no suffix defaults to the most commonly used: unsigned normalized integers
  -		     :r8 
  +		     :r8
   		     16 ;; width = 1 means one component (not width 0!)
   		     16 ;; height, we provide the data with a 1d-array, this is where opengl
   		     ;; descides how to access it via pointer arithmetic to get at the proper values
   		     ;; i.e. how many rows in a column is decided here
   
   		     0 ; border: old no longer supported feature
  -		     
  +
   		     ;; we are uploading a single "red" component to the texture,
   		     ;; components of _texels_ are called after colors. Remember that our
   		     ;; texel is going to be represented as a 4d-vector, and a vectors
  
positive.code:     ;; - internal-format: format that opengl will use to store the texture's data
      ;; - width          : width of the image = length of the look-up/array table
      ;; - border         : must always be 0: represents an old feature, no longer supported
      
      ;; These last three parameters, of all the functions of the form gl:tex-image*, are special.
      ;; They tell opengl how to read the texture data in our array..
      ;; - format         : component supplied to the "uniform sampler", ther are only certain
  
negative.code: (defvar *2d-test-data*
    (cffi:foreign-alloc :unsigned-char
  		      ;; to tell up from bottom better in tests
  		      ;; Note: This is also how opengl expects texture data. We can read the value from this
  		      ;; 1d-array by making it arbitrarily 2d (gl:tex-image-2d ... <width> <height> .#|<-here|#.)
  		      ;; and we read the value using tex-coordinate, where, with the current representation below
  		      ;; [0,0] represents top-left, [1,0] top-righ, [1,1]. If we imagine the texture coordinates
  		      ;; following a coordinate system sceme this "asci-art" below is upside-down. Positive
    		      ;; y is down, negative up. But x is right.
    		      :initial-contents
   ;;    	 -------+------------------------------------------------------------------------------> +x
   #|	       	.  |# (list  64  64  64  255 64  64  64  64 000  64  64  64  64  64 000  64
   #|	       	.  |# 	     64  64  255 255 255 64  64 000  64  64 100  64  64  64  64 000
   #|	       	.  |# 	     64  255 64  255 64  255 64 000  64  64  64 100  64  64  64 000
   #|	       	.  |# 	     64  64  64  255 64  64  64 000  64  64  64 100  64  64  64 000
   #|	       	.  |# 	     64  64  64  255 64  64  64 000  64  64  64 100  64  64  64 000
   #|	       	.  |# 	     64  64  64  255 64  64  64 000  64  64  64 100 100  64  64 000
   #|	       	.  |# 	     64  64  64  255 64  64  64 000  64  64 100  64 100  64  64 000
   #|	       	.  |# 	     64  64  64  64  64  64  64  64 000 100  64  64  64 100 000  64
   #|	       	.  |# 	     128 128 128 128 128 128 128 128 195 195 195 195 195 195 195 195
   #|	       	.  |# 	     128 128 128 128 128 128 128 128 195 195 195 195 195 195 195 195
   #|	       	.  |# 	     128 128 128 128 128 128 128 128 195 195 195 195 195 195 195 195
   #|	       	.  |# 	     128 128 128 128 128 128 128 128 195 195 000 195 195 195 195 195
   #|	       	.  |# 	     000 128 128 128 128 128 128 000 195 000 000 000 195 000 000 000
   #|	       	.  |# 	     000 128 000 128 128 128 000 128 195 195 000 195 195 195 195 000
   #|    	     +y	.  |# 	     000 000 128 128 000 128 128 000 195 195 000 195 195 195 000 195
   #|    	       	v  |# 	     000 128 000 128 128 128 000 128 195 195 000 195 195 000 000 000)))
  
  (defvar *sampler* 0)
  (defvar *texture* 0)
  