WebGLRenderingContext: getUniform() 方法

Baseline 已广泛支持

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

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

WebGLRenderingContext.getUniform() 方法是 WebGL API 的一部分,它返回指定位置的 uniform 变量的值。

语法

js
getUniform(program, location)

参数

program

包含 uniform 属性的 WebGLProgram

location

一个包含要获取的 uniform 属性的 WebGLUniformLocation 对象。

返回值

返回类型取决于 uniform 类型

Uniform 类型 返回类型
仅 WebGL 1
boolean GLBoolean
int GLint
float GLfloat
vec2 Float32Array(包含 2 个元素)
ivec2 Int32Array(包含 2 个元素)
bvec2 Array,包含 GLBoolean(包含 2 个元素)
vec3 Float32Array(包含 3 个元素)
ivec3 Int32Array(包含 3 个元素)
bvec3 Array,包含 GLBoolean(包含 3 个元素)
vec4 Float32Array(包含 4 个元素)
ivec4 Int32Array(包含 4 个元素)
bvec4 Array,包含 GLBoolean(包含 4 个元素)
mat2 Float32Array(包含 4 个元素)
mat3 Float32Array(包含 9 个元素)
mat4 Float32Array(包含 16 个元素)
sampler2D GLint
samplerCube GLint
WebGL 2 中还可用
uint GLuint
uvec2 Uint32Array(包含 2 个元素)
uvec3 Uint32Array(包含 3 个元素)
uvec4 Uint32Array(包含 4 个元素)
mat2x3 Float32Array(包含 6 个元素)
mat2x4 Float32Array(包含 8 个元素)
mat3x2 Float32Array(包含 6 个元素)
mat3x4 Float32Array(包含 12 个元素)
mat4x2 Float32Array(包含 8 个元素)
mat4x3 Float32Array(包含 12 个元素)
任意 sampler 类型 GLint

示例

js
const loc = gl.getUniformLocation(program, "u_foobar");
gl.getUniform(program, loc);

规范

规范
WebGL 规范
# 5.14.10
WebGL 2.0 规范
# 3.7.8

浏览器兼容性

另见