WebGLRenderingContext.getUniform()

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

语法

any gl.getUniform(program, location);

参数

program

包含全局变量的一个WebGLProgram

location

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

返回值

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

变量类型(着色器内) 返回值类型
在 WebGL 1 中支持的
boolean GLBoolean (en-US)
int GLint (en-US)
float GLfloat (en-US)
vec2 Float32Array (with 2 elements)
ivec2 Int32Array (with 2 elements)
bvec2 Array of GLBoolean (en-US) (with 2 elements)
vec3 Float32Array (with 3 elements)
ivec3 Int32Array (with 3 elements)
bvec3 Array of GLBoolean (en-US) (with 3 elements)
vec4 Float32Array (with 4 elements)
ivec4 Int32Array (with 4 elements)
bvec4 Array of GLBoolean (en-US) (with 4 elements)
mat2 Float32Array (with 4 elements)
mat3 Float32Array (with 9 elements)
mat4 Float32Array (with 16 elements)
sampler2D GLint (en-US)
samplerCube GLint (en-US)
在 WebGL 2 中新增支持的
uint GLuint (en-US)
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 (en-US)

示例

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

相关链接