WebGLRenderingContext.getUniform()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

WebGL APIWebGLRenderingContext.getUniform() 方法返回指定位置的全局变量的值。

语法

js
getUniform(program, location)

参数

program

包含全局变量的一个WebGLProgram

location

包含要获取的全局变量位置的 WebGLUniformLocation 对象。

返回值

返回的类型取决于全局变量的类型:

变量类型(着色器内) 返回值类型
在 WebGL 1 中支持的
boolean GLBoolean
int GLint
float GLfloat
vec2 Float32Array (with 2 elements)
ivec2 Int32Array (with 2 elements)
bvec2 Array of GLBoolean (with 2 elements)
vec3 Float32Array (with 3 elements)
ivec3 Int32Array (with 3 elements)
bvec3 Array of GLBoolean (with 3 elements)
vec4 Float32Array (with 4 elements)
ivec4 Int32Array (with 4 elements)
bvec4 Array of GLBoolean (with 4 elements)
mat2 Float32Array (with 4 elements)
mat3 Float32Array (with 9 elements)
mat4 Float32Array (with 16 elements)
sampler2D GLint
samplerCube GLint
在 WebGL 2 中新增支持的
uint GLuint
uvec2 Uint32Array (with 2 elements)
uvec3 Uint32Array (with 3 elements)
uvec4 Uint32Array (with 4 elements)
mat2x3 Float32Array (with 6 elements)
mat2x4 Float32Array (with 8 elements)
mat3x2 Float32Array (with 6 elements)
mat3x4 Float32Array (with 12 elements)
mat4x2 Float32Array (with 8 elements)
mat4x3 Float32Array (with 12 elements)
any sampler type GLint

示例

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

//code in vertex-shader
//...
//uniform mat4 uNormalMatrix;
//...
//gl.getUniform(program,gl.getUniformLocation(program,"uNormalMatrix"))
//>Float32Array(16) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

规范

Specification
WebGL Specification
# 5.14.10
WebGL 2.0 Specification
# 3.7.8

浏览器兼容性

BCD tables only load in the browser

相关链接