Framebuffer

new SuperMap3D.Framebuffer(options)

创建一个具有可选初始颜色、深度和模板附件的framebuffer。framebuffer用于渲染到纹理效果;它们允许我们在一次传递中渲染到纹理,并在稍后传递中读取它。
Name Type Description
options Object 如下面示例所示的初始framebuffer附件。需要context。 可能的属性有colorTexturescolorRenderbuffersdepthTexturedepthRenderbufferstencilRenderbufferdepthStencilTexturedepthStencilRenderbuffer
Throws:
  • DeveloperError : 不能同时拥有颜色纹理和颜色 renderbuffer 附件。
  • DeveloperError : 不能同时拥有深度纹理和深度呈现buffer附件。
  • DeveloperError : 无法同时拥有深度模版纹理和深度模版呈现buffer附件。
  • DeveloperError : 不能同时拥有深度和深度模版渲染buffer。
  • DeveloperError : 不能同时使用模版和深度模版渲染buffer。
  • DeveloperError : 不能同时拥有深度和模版渲染buffer。
  • DeveloperError : 彩色纹理像素格式必须是彩色格式。
  • DeveloperError : 深度纹理像素格式必须是 DEPTH_COMPONENT。
  • DeveloperError : 深度-模板-纹理像素格式必须是 DEPTH_STENCIL。
  • DeveloperError : 颜色附件的数量超过了支持的数量。
Example:
// Create a framebuffer with color and depth texture attachments.
var width = context.canvas.clientWidth;
var height = context.canvas.clientHeight;
var framebuffer = new Framebuffer({
  context : context,
  colorTextures : [new Texture({
    context : context,
    width : width,
    height : height,
    pixelFormat : PixelFormat.RGBA
  })],
  depthTexture : new Texture({
    context : context,
    width : width,
    height : height,
    pixelFormat : PixelFormat.DEPTH_COMPONENT,
    pixelDatatype : PixelDatatype.UNSIGNED_SHORT
  })
});

Members

destroyAttachments : Boolean

为 true 时,framebuffer拥有其附件,因此当调用Framebuffer#destroy 或为附件点分配新附件时,这些附件将被销毁。
Default Value: true
See:
  • Framebuffer#destroy

hasDepthAttachment : Boolean

如果framebuffer具有深度附件,则为true。深度附件包括深度和深度模板纹理,以及深度和深度模板渲染缓冲区。当渲染到framebuffer时,需要深度附件才能使深度测试生效。

status : Number

framebuffer的状态。如果状态不是 WebGLConstants.FRAMEBUFFER_COMPLETE,则在尝试渲染framebuffer时会产生 DeveloperError 错误。