WebGLRenderingContext: vertexAttrib[1234]f[v]() 方法

基线 广泛可用

此功能已得到良好建立,可在许多设备和浏览器版本中使用。它自以下时间起在浏览器中可用 2015 年 7 月.

WebGLRenderingContext.vertexAttrib[1234]f[v]() 方法是 WebGL API 的一部分,用于指定通用顶点属性的常量值。

语法

js
vertexAttrib1f(index, v0)
vertexAttrib2f(index, v0, v1)
vertexAttrib3f(index, v0, v1, v2)
vertexAttrib4f(index, v0, v1, v2, v3)

vertexAttrib1fv(index, value)
vertexAttrib2fv(index, value)
vertexAttrib3fv(index, value)
vertexAttrib4fv(index, value)

参数

index

一个 GLuint,指定要修改的顶点属性的位置。

v0v1v2v3

顶点属性值的浮点数 Number

value

浮点向量顶点属性值的 Float32Array

返回值

无 (undefined)。

描述

虽然顶点属性通常用于指定每个顶点不同的值(使用 vertexAttribPointer),但指定常量值也很有用。例如,如果您的着色器具有一个 color 顶点属性,但您希望以单一颜色绘制所有内容,则可以使用 vertexAttrib 来实现此目的,而无需创建仅填充一个值的缓冲区或创建使用统一颜色值的单独着色器。

如果已绑定的数组缓冲区未通过 enableVertexAttribArray 启用,则将使用此值。

属性可能是矩阵,在这种情况下,必须将矩阵的列加载到连续的顶点属性插槽中。

使用 vertexAttrib 设置的值是上下文全局的;也就是说,它们不是着色器状态的一部分(例如,通用顶点属性索引到着色器变量绑定),也不是顶点数组对象状态的一部分(例如,已启用的顶点属性数组)。更改值的唯一方法是再次调用此函数。

示例

js
const a_foobar = gl.getAttribLocation(shaderProgram, "foobar");
//either set each component individually:
gl.vertexAttrib3f(a_foobar, 10.0, 5.0, 2.0);
//or provide a Float32Array:
const floatArray = new Float32Array([10.0, 5.0, 2.0]);
gl.vertexAttrib3fv(a_foobar, floatArray);
js
// we want to load the following 3x3 matrix into attribute named "matrix3x3"
// 0 1 2
// 3 4 5
// 6 7 8
const matrix3x3Location = gl.getAttribLocation(shaderProgram, "matrix3x3");
gl.vertexAttrib3f(matrix3x3Location, 0, 3, 6);
gl.vertexAttrib3f(matrix3x3Location + 1, 1, 4, 7);
gl.vertexAttrib3f(matrix3x3Location + 2, 2, 5, 8);

规范

规范
WebGL 规范
# 5.14.10

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅