OES_texture_float 扩展

Baseline 已广泛支持

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

OES_texture_float 扩展是 WebGL API 的一部分,它公开了纹理的浮点像素类型。

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

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

扩展的方法

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

  • type 参数现在接受 gl.FLOAT
  • pixels 参数现在接受一个 Float32Array

限制:线性过滤

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

要对浮点纹理使用线性过滤,除了此扩展之外,还需要启用 OES_texture_float_linear 扩展。

浮点颜色缓冲区

此扩展会自动启用 WEBGL_color_buffer_float 扩展(如果支持),该扩展允许渲染到 32 位浮点颜色缓冲区。

示例

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

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

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.FLOAT, image);

规范

规范
WebGL OES_texture_float Khronos 批准的扩展规范

浏览器兼容性

另见