WebGL2RenderingContext: uniform[1234][uif][v]() 方法

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

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

WebGL2RenderingContext.uniform[1234][uif][v]() 方法是 WebGL API 的一部分,用于指定 uniform 变量的值。

这些方法的名称构成方式如下:

  • uniform 变量中组件的数量(1、2、3 或 4)。
  • uniform 变量的类型(i 表示整数,f 表示浮点数,ui 表示无符号整数)。
  • 对于矢量类型,末尾是否有矢量(v)后缀。

它们可以通过正则表达式 uniform[1234](u?i|f)v? 进行匹配。

这些签名中的大多数都继承自 WebGL 1 API。WebGL 2 添加了无符号整数版本,以及矢量方法中额外的 srcOffsetsrcLength 参数。

语法

js
uniform1ui(location, v0)
uniform2ui(location, v0, v1)
uniform3ui(location, v0, v1, v2)
uniform4ui(location, v0, v1, v2, v3)

uniform1fv(location, data)
uniform1fv(location, data, srcOffset)
uniform1fv(location, data, srcOffset, srcLength)

uniform2fv(location, data)
uniform2fv(location, data, srcOffset)
uniform2fv(location, data, srcOffset, srcLength)

uniform3fv(location, data)
uniform3fv(location, data, srcOffset)
uniform3fv(location, data, srcOffset, srcLength)

uniform4fv(location, data)
uniform4fv(location, data, srcOffset)
uniform4fv(location, data, srcOffset, srcLength)

uniform1iv(location, data)
uniform1iv(location, data, srcOffset)
uniform1iv(location, data, srcOffset, srcLength)

uniform2iv(location, data)
uniform2iv(location, data, srcOffset)
uniform2iv(location, data, srcOffset, srcLength)

uniform3iv(location, data)
uniform3iv(location, data, srcOffset)
uniform3iv(location, data, srcOffset, srcLength)

uniform4iv(location, data)
uniform4iv(location, data, srcOffset)
uniform4iv(location, data, srcOffset, srcLength)

uniform1uiv(location, data)
uniform1uiv(location, data, srcOffset)
uniform1uiv(location, data, srcOffset, srcLength)

uniform2uiv(location, data)
uniform2uiv(location, data, srcOffset)
uniform2uiv(location, data, srcOffset, srcLength)

uniform3uiv(location, data)
uniform3uiv(location, data, srcOffset)
uniform3uiv(location, data, srcOffset, srcLength)

uniform4uiv(location, data)
uniform4uiv(location, data, srcOffset)
uniform4uiv(location, data, srcOffset, srcLength)

参数

location

一个包含要修改的 uniform 属性位置的 WebGLUniformLocation 对象。

data, v0, v1, v2, v3

将用于 uniform 变量的新值。可能的类型:

  • 对于无符号整数值(带 ui 的方法)、整数值(带 i 的方法)或浮点数(带 f 的方法),使用 Number
  • 对于无符号整数矢量方法(带 uiv 的方法),使用 Uint32Array(或无符号整数数字的 Array)。
  • 对于整数矢量方法(带 iv 的方法),使用 Int32Array(或整数数字的 Array)。
  • 对于浮点数矢量方法(带 fv 的方法),使用 Float32Array(或数字的 Array)。
srcOffset 可选

一个非负整数,指定要使用的 data 数组中的第一个元素的索引。默认为 0

srcLength 可选

一个非负整数,指定要使用的 data 数组中的元素数量。默认为 0,表示 data.length - srcOffsetsrcOffset + srcLength 必须小于或等于 data.length

返回值

无(undefined)。

规范

规范
WebGL 2.0 规范
# 3.7.8

浏览器兼容性

另见