WebGLRenderingContext: getShaderPrecisionFormat() 方法

Baseline 已广泛支持

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

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

WebGLRenderingContext.getShaderPrecisionFormat() 方法属于 WebGL API,它返回一个新的 WebGLShaderPrecisionFormat 对象,该对象描述了指定着色器数值格式的范围和精度。

语法

js
getShaderPrecisionFormat(shaderType, precisionType)

参数

shaderType

gl.FRAGMENT_SHADERgl.VERTEX_SHADER

precisionType

一个精度类型值。可以是 gl.LOW_FLOAT, gl.MEDIUM_FLOAT, gl.HIGH_FLOAT, gl.LOW_INT, gl.MEDIUM_INT, 或 gl.HIGH_INT

返回值

一个 WebGLShaderPrecisionFormat 对象,如果发生错误则返回 null

异常

  • 如果着色器或精度类型无法识别,则返回 gl.INVALID_ENUM
  • 如果不支持着色器编译器,则返回 gl.INVALID_OPERATION

示例

以下代码获取具有 gl.MEDIUM_FLOAT 精度类型的 gl.VERTEX_SHADER 的精度格式。

js
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");

gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);
// WebGLShaderPrecisionFormat { rangeMin: 127, rangeMax: 127, precision: 23 }

规范

规范
WebGL 规范
# 5.14.9

浏览器兼容性

另见