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 API 的 WebGLRenderingContext.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