anchor.diff:    }
   }
   
  +
  +int _ChannelsToFormat(int channels) {
  +  switch (channels) {
  +    case 4:
  +      return GL_RGBA;
  +    case 2:
  +      return GL_RG;
  +    default:
  +      assert(false);
  +      return -1;
  +  }
  +}
  +
   class Framebuffer {
     ChronosGL _cgl;
   
  
positive.code:   switch (code) {
      case GL_UNSIGNED_BYTE:
        return "GL_UNSIGNED_BYTE";
      default:
        return "${code}";
    }
  
negative.code:     }
      if (stencilTexture != null) {
        assert(!depthStencilCombined,
        "in combined mode - the stencil parameter must be null");
        _cgl.framebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT,
            GL_TEXTURE_2D, stencilTexture.GetTexture(), 0);
      }
  