WebGLRenderingContext: checkFramebufferStatus() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

注意:此功能在 Web Workers 中可用。

WebGLRenderingContext.checkFramebufferStatus() 方法是 WebGL API 的一部分,用于返回 WebGLFramebuffer 对象的完整性状态。

语法

js
checkFramebufferStatus(target)

参数

目标

一个 GLenum,指定绑定点(目标)。可能的值

gl.FRAMEBUFFER

用于渲染图像的颜色、Alpha、深度和模板缓冲区的集合缓冲区数据存储。

使用 WebGL 2 上下文时,还可以使用以下值:

gl.DRAW_FRAMEBUFFER

相当于 gl.FRAMEBUFFER。用作绘图、渲染、清除和写入操作的目标。

gl.READ_FRAMEBUFFER

用作读取操作的源。

返回值

一个 GLenum 值,表示帧缓冲区的完整性状态,如果发生错误则返回 0。可能的枚举返回值

  • gl.FRAMEBUFFER_COMPLETE: 帧缓冲区已准备好显示。

  • gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 附件类型不匹配,或者并非所有帧缓冲区附件点都完成了帧缓冲区附件。

  • gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 没有附件。

  • gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 附件的高度和宽度不相同。

  • gl.FRAMEBUFFER_UNSUPPORTED: 附件的格式不受支持,或者深度和模板附件不是同一个渲染缓冲区。

  • 在使用 WebGL 2 context 时,还可以返回以下值:

    • gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 附件渲染缓冲区的 gl.RENDERBUFFER_SAMPLES 值不同,或者当附件图像是渲染缓冲区和纹理的混合时,这些值非零。
  • 在使用 OVR_multiview2 扩展时,还可以返回以下值:

    • ext.FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR: 如果所有值 FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 不为 NONE 的帧缓冲区附件点的 baseViewIndex 不相同,则认为帧缓冲区不完整。

示例

js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");
const framebuffer = gl.createFramebuffer();

// …

gl.checkFramebufferStatus(gl.FRAMEBUFFER);

规范

规范
WebGL 规范
# 5.14.6
WebGL 2.0 规范
# 3.7.4

浏览器兼容性

另见