OES_texture_half_float 扩展

Baseline 已广泛支持

此功能已相当成熟,可在多种设备和浏览器版本上运行。自 ⁨2016 年 8 月⁩ 起,所有浏览器均已提供此功能。

OES_texture_half_float 扩展是 WebGL API 的一部分,它增加了包含 16 位(也称为半精度浮点)和 32 位浮点组件的纹理格式。

可以使用 WebGLRenderingContext.getExtension() 方法来访问 WebGL 扩展。有关更多信息,请参阅 WebGL 教程中的 使用扩展

注意:此扩展仅适用于 WebGL1 上下文。在 WebGL2 中,此扩展的功能默认可在 WebGL2 上下文中使用。WebGL2 中的常量是 gl.HALF_FLOAT

常量

ext.HALF_FLOAT_OES

半精度浮点类型(16 位)。

扩展的方法

此扩展扩展了 WebGLRenderingContext.texImage2D()WebGLRenderingContext.texSubImage2D()

  • 现在 type 参数接受 ext.HALF_FLOAT_OES

限制:线性过滤

此扩展不允许对半精度浮点纹理进行线性过滤。如果您在 WebGLRenderingContext.texParameter() 方法中将放大或缩小过滤器设置为 gl.LINEARgl.LINEAR_MIPMAP_NEARESTgl.NEAREST_MIPMAP_LINEARgl.LINEAR_MIPMAP_LINEAR 之一,并使用半精度浮点纹理,则纹理将被标记为不完整。

要对半精度浮点纹理使用线性过滤,请除了启用此扩展外,还要启用 OES_texture_half_float_linear 扩展。

半精度浮点颜色缓冲区

此扩展会隐式启用 EXT_color_buffer_half_float 扩展(如果支持),该扩展允许渲染到 16 位浮点格式。

示例

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

const texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, ext.HALF_FLOAT_OES, image);

规范

规范
WebGL OES_texture_half_float Khronos 批准扩展规范

浏览器兼容性

另见