EXT_color_buffer_half_float 擴充套件

Baseline 已廣泛支援

此功能已成熟,並可在許多裝置和瀏覽器版本上使用。自 2020 年 9 月起,所有瀏覽器均已提供此功能。

EXT_color_buffer_half_float 擴充套件是 WebGL API 的一部分,它增加了渲染到 16 位浮點顏色緩衝區的能力。

可以使用 WebGLRenderingContext.getExtension() 方法來訪問 WebGL 擴充套件。有關更多資訊,請參閱 WebGL 教程中的 使用擴充套件

注意: 此擴充套件適用於 WebGL1WebGL2 上下文。在 WebGL 2 上,如果平臺支援 16 位浮點渲染目標但不支援 32 位浮點渲染目標,則此擴充套件是使用 EXT_color_buffer_float 擴充套件的替代方案。

OES_texture_half_float 擴充套件會隱式啟用此擴充套件。

常量

ext.RGBA16F_EXT

RGBA 16 位浮點顏色可渲染格式。

ext.RGB16F_EXT

RGB 16 位浮點格式。在 WebGL 1.0 中,這可能是顏色可渲染的(取決於實現)。在 WebGL 2.0 中,此格式不可顏色渲染。

ext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT

傳遞給 WebGLRenderingContext.getFramebufferAttachmentParameter() 以獲取幀緩衝區的型別。

ext.UNSIGNED_NORMALIZED_EXT

幀緩衝區包含無符號定點分量。

擴充套件的方法

此擴充套件擴充套件了 WebGLRenderingContext.renderbufferStorage()

  • 在 WebGL 1.0 上下文中,internalFormat 引數現在接受 ext.RGBA16F_EXText.RGB16F_EXT。但是,ext.RGB16F_EXT 的支援是可選的,應用程式必須檢查幀緩衝區的完整性以確定是否支援。
  • 在 WebGL 2.0 上下文中,internalFormat 引數現在接受 ext.RGBA16F_EXTRGB16F 格式在 WebGL 2.0 中不可顏色渲染。

它擴充套件了 WebGLRenderingContext.getFramebufferAttachmentParameter()

  • 在 WebGL 1.0 上下文中,pname 引數現在接受 ext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT。如果 attachmentDEPTH_STENCIL_ATTACHMENTpnameFRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT,則會生成 INVALID_OPERATION 錯誤。當 pnameext.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 時,對於浮點或無符號定點分量,getFramebufferAttachmentParameter() 分別返回 gl.FLOATgl.UNSIGNED_NORMALIZED_EXT

示例

js
const ext = gl.getExtension("EXT_color_buffer_half_float");

gl.renderbufferStorage(gl.RENDERBUFFER, ext.RGBA16F_EXT, 256, 256);

規範

規範
WebGL EXT_color_buffer_half_float 擴充套件規範

瀏覽器相容性

另見