WebGLRenderingContext: getFramebufferAttachmentParameter() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

WebGLRenderingContext.getFramebufferAttachmentParameter() 方法是 WebGL API 的一部分,用於返回關於幀緩衝附件的資訊。

語法

js
getFramebufferAttachmentParameter(target, attachment, pname)

引數

目標

一個 GLenum,指定繫結點(目標)。可能的值

gl.FRAMEBUFFER

用於渲染影像的顏色、Alpha、深度和模板緩衝區的集合緩衝區資料儲存。

使用 WebGL 2 上下文時,還可以使用以下值:

gl.DRAW_FRAMEBUFFER

相當於 gl.FRAMEBUFFER。用作繪圖、渲染、清除和寫入操作的目標。

gl.READ_FRAMEBUFFER

用作讀取操作的源。

attachment

一個 GLenum,指定 texture 的附件點。可能的值

  • gl.COLOR_ATTACHMENT0:幀緩衝顏色緩衝區的紋理附件。
  • gl.DEPTH_ATTACHMENT:幀緩衝深度緩衝區的紋理附件。
  • gl.STENCIL_ATTACHMENT:幀緩衝模板緩衝區的紋理附件。
  • gl.DEPTH_STENCIL_ATTACHMENT:深度和模板緩衝區的紋理附件。

使用 WebGL 2 上下文時,還可以使用以下值:

  • gl.COLOR_ATTACHMENT1 gl.COLOR_ATTACHMENT2 gl.COLOR_ATTACHMENT3 gl.COLOR_ATTACHMENT4 gl.COLOR_ATTACHMENT5 gl.COLOR_ATTACHMENT6 gl.COLOR_ATTACHMENT7 gl.COLOR_ATTACHMENT8 gl.COLOR_ATTACHMENT9 gl.COLOR_ATTACHMENT10 gl.COLOR_ATTACHMENT11 gl.COLOR_ATTACHMENT12 gl.COLOR_ATTACHMENT13 gl.COLOR_ATTACHMENT14 gl.COLOR_ATTACHMENT15

使用 WEBGL_draw_buffers 擴充套件時

  • ext.COLOR_ATTACHMENT0_WEBGL(與 gl.COLOR_ATTACHMENT0 相同) ext.COLOR_ATTACHMENT1_WEBGL ext.COLOR_ATTACHMENT2_WEBGL ext.COLOR_ATTACHMENT3_WEBGL ext.COLOR_ATTACHMENT4_WEBGL ext.COLOR_ATTACHMENT5_WEBGL ext.COLOR_ATTACHMENT6_WEBGL ext.COLOR_ATTACHMENT7_WEBGL ext.COLOR_ATTACHMENT8_WEBGL ext.COLOR_ATTACHMENT9_WEBGL ext.COLOR_ATTACHMENT10_WEBGL ext.COLOR_ATTACHMENT11_WEBGL ext.COLOR_ATTACHMENT12_WEBGL ext.COLOR_ATTACHMENT13_WEBGL ext.COLOR_ATTACHMENT14_WEBGL ext.COLOR_ATTACHMENT15_WEBGL
pname

一個 GLenum,指定要查詢的資訊。可能的值

  • gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:包含已附加影像的型別。
  • gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:已附加影像的紋理或渲染緩衝區(WebGLRenderbufferWebGLTexture)。
  • gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:Mipmap 級別。預設值:0。
  • gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:紋理的立方體貼圖面的名稱。

使用 EXT_sRGB 擴充套件時

  • ext.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT:幀緩衝顏色編碼。

使用 WebGL 2 上下文時,還可以使用以下值:

  • gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
  • gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
  • gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
  • gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER

使用 OVR_multiview2 擴充套件時

  • ext.FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR:幀緩衝物件附件的檢視數量。
  • ext.FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR:幀緩衝物件附件的基礎檢視索引。

返回值

取決於請求的資訊(由 pname 指定)。可以是 GLintGLenumWebGLRenderbufferWebGLTexture

pname 引數 返回值
gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 一個 GLenum,指示紋理的型別。可以是 gl.RENDERBUFFERgl.TEXTURE,或者如果沒有附加影像,則為 gl.NONE
gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 已附加影像的紋理(WebGLTexture)或渲染緩衝區(WebGLRenderbuffer)。
gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 一個 GLint,指示 mipmap 級別。預設值:0。
gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 一個 GLenum,指示紋理的立方體貼圖面名稱。可能的值
  • gl.TEXTURE_CUBE_MAP_POSITIVE_X:立方體的正 X 面的影像。
  • gl.TEXTURE_CUBE_MAP_NEGATIVE_X:立方體的負 X 面的影像。
  • gl.TEXTURE_CUBE_MAP_POSITIVE_Y:立方體的正 Y 面的影像。
  • gl.TEXTURE_CUBE_MAP_NEGATIVE_Y:立方體的負 Y 面的影像。
  • gl.TEXTURE_CUBE_MAP_POSITIVE_Z:立方體的正 Z 面的影像。
  • gl.TEXTURE_CUBE_MAP_NEGATIVE_Z:立方體的負 Z 面的影像。
gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 一個 GLint,指示附件 Alpha 元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 一個 GLint,指示附件藍色元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 一個 GLenum,指示指定附件元件的編碼。可以是 gl.LINEARgl.SRGB
gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 一個 GLenum,指示指定附件元件的格式。可以是 gl.FLOATgl.INTgl.UNSIGNED_INTgl.SIGNED_NORMALIZEDgl.UNSIGNED_NORMALIZED
gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 一個 GLint,指示附件深度元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 一個 GLint,指示附件綠色元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE 一個 GLint,指示附件紅色元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 一個 GLint,指示附件模板元件的位數。
gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 一個 GLint,指示包含已附加影像的紋理層的數量。
ext.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 一個 GLenum,指示幀緩衝顏色編碼。可以是 gl.LINEARext.SRGB_EXT
ext.FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 一個 GLsizei,指示幀緩衝物件附件的檢視數量。
ext.FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 一個 GLint,指示幀緩衝物件附件的基礎檢視索引。

異常

  • 如果 target 不是 gl.FRAMEBUFFERgl.DRAW_FRAMEBUFFERgl.READ_FRAMEBUFFER,或者 attachment 不是接受的附件點之一,則會丟擲 gl.INVALID_ENUM 錯誤。

示例

js
gl.getFramebufferAttachmentParameter(
  gl.FRAMEBUFFER,
  gl.COLOR_ATTACHMENT0,
  gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
);

規範

規範
WebGL 規範
# 5.14.6
WebGL 2.0 規範
# 3.7.4

瀏覽器相容性

另見