anchor.diff:                             :destination-alpha :zero) :type blending-params))
   
   (defmethod print-object ((obj attachment) stream)
  -  (format stream "#<~s-ATTACHMENT (:fbo ~s)>"
  -          "COLOR"
  -          (%fbo-id (%attachment-fbo obj))
  -          ))
  +  (format stream "#<~a-ATTACHMENT (:fbo ~s)>"
  +          (if (%attachment-gpu-array obj)
  +	      (let ((f (internal-format (%attachment-gpu-array obj))))
  +		(cond
  +		  ((color-renderable-formatp f) "COLOR")
  +		  ((depth-formatp f) "DEPTH")
  +		  ((stencil-formatp f) "DEPTH")
  +		  ((depth-stencil-formatp f) "DEPTH-STENCIL")
  +		  (t "INVALID-IMAGE-FORMAT"))))
  +          (%fbo-id (%attachment-fbo obj))))
   
   (defmethod print-object ((object fbo) stream)
     (format stream "#<~a~@[ COLOR-ATTACHMENTS ~a~]~@[ DEPTH-ATTACHMENT ~a~]>"
  
positive.code:                  magnify-filter wrap compare)
           (rest pattern)
         (assert (attachment-compatible (first pattern) internal-format))
         (texref
          (make-texture nil
                        :dimensions dimensions
                        :element-type internal-format
                        :mipmap mipmap
                        :immutable immutable
                        :lod-bias lod-bias
                        :min-lod min-lod
                        :max-lod max-lod
                        :minify-filter minify-filter
                        :magnify-filter magnify-filter
                        :wrap wrap
                        :compare compare))))
      ;; use an existing gpu-array
      ((typep (second pattern) 'gpu-array-t) (second pattern))
      ;; use the first gpu-array in texture
      ((typep (second pattern) 'gl-texture) (texref (second pattern)))
      ;; take the dimensions from some object
      (t (texref
  	(make-texture nil :dimensions (dimensions (second pattern))
  		      :element-type (%get-default-texture-format
  				     (first pattern)))))))
  
  (defun %get-default-texture-format (attachment)
    (assert (keywordp attachment))
  
negative.code:                          creates a new texture at the framesize of the object
                           and attaches it to attachment named by keyword"
    (let ((target (%extract-target (first args))))
      (mapcar (lambda (texture-pair attachment)
                (fbo-attach fbo texture-pair attachment target))
              (mapcar #'%gen-textures args)
              (mapcar (lambda (x) (binding-shorthand (first x)))
                      (mapcar #'listify args)))))
  