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 扩展规范

浏览器兼容性

另见