WebGLRenderingContext: vertexAttrib[1234]f[v]() 方法
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)
参数
返回值
无 (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 的浏览器中加载。