名称
glVertexAttrib - 指定通用顶点属性的值
C规范
void glVertexAttrib1f( GLuint index,GLfloat v0);
void glVertexAttrib2f( GLuint index,GLfloat v0, GLfloat v1);
void glVertexAttrib3f( GLuint index,GLfloat v0,GLfloat v1,GLfloat v2);
void glVertexAttrib4f( GLuint index,GLfloat v0,GLfloat v1,GLfloat v2,GLfloat v3);
void glVertexAttrib1fv( GLuint index,const GLfloat *v);
void glVertexAttrib2fv( GLuint index,const GLfloat *v);
void glVertexAttrib3fv( GLuint index,const GLfloat *v);
void glVertexAttrib4fv( GLuint index,const GLfloat *v);
参数
index
指定要修改的通用顶点属性的索引。
v0,v1,v2,v3
指定要用于指定顶点属性的新值。
v
指定指向要用于通用顶点属性的值数组的指针。
描述
glVertexAttrib入口点系列允许应用程序在编号位置传递通用顶点属性。
通用属性定义为组织为数组的四组件值。此数组的第一个条目编号为0,并且数组的大小由依赖于实现的符号常量GL_MAX_VERTEX_ATTRIBS指定。可以使用glVertexAttrib调用修改此数组的各个元素,该调用指定要修改的元素的索引以及该元素的值。
这些命令可用于指定index指定的通用顶点属性的一个,两个,三个或全部四个组件。命令名称中的1表示只传递一个值,它将用于修改通用顶点属性的第一个组件。第二个和第三个组件将设置为0,第四个组件将设置为1。同样,命令名称中的2表示为前两个组件提供值,第三个组件将设置为0 ,第四个组件将设置为1.命令名称中的3表示为前三个组件提供的值,第四个组件将设置为1,而名称中的4表示提供了值对于所有四个组件。
字母f表示参数的类型为float。当v附加到名称时,命令可以获取指向浮点数组的指针。
允许OpenGL ES着色语言属性变量的类型为mat2,mat3或mat4。可以使用glVertexAttrib入口点加载这些类型的属性。矩阵必须按列主要顺序加载到连续的通用属性槽中,每个通用属性槽中有一列矩阵。
在顶点着色器中声明的用户定义的属性变量可以通过调用glBindAttribLocation绑定到通用属性索引。这允许应用程序在顶点着色器中使用描述性变量名称。对指定通用顶点属性的后续更改将立即反映为对顶点着色器中相应属性变量的更改。
顶点着色器中的通用顶点属性索引和用户定义的属性变量之间的绑定是程序对象状态的一部分,但通用顶点属性的当前值不是。每个通用顶点属性的值是当前状态的一部分,即使使用了不同的程序对象,它也会被维护。
应用程序可以自由修改未绑定到命名顶点着色器属性变量的通用顶点属性。这些值仅作为当前状态的一部分进行维护,顶点着色器不会访问这些值。如果在顶点着色器执行时未更新绑定到顶点着色器中的属性变量的通用顶点属性,则顶点着色器将重复使用当前顶点属性的当前值。
注意
应用程序可以将多个属性名称绑定到同一个通用顶点属性索引。这称为别名,只有在顶点着色器中只有一个别名属性变量处于活动状态时,或者如果没有通过顶点着色器的路径消耗多个别名到同一位置的属性时,才允许使用别名。不需要OpenGL实现来进行错误检查以检测别名,允许它们假设不会出现别名,并且允许它们采用仅在没有别名的情况下才能工作的优化。
错误
GL_INVALID_VALUE :index>=GL_MAX_VERTEX_ATTRIBS
相关Gets
glGet 参数GL_CURRENT_PROGRAM
glGetActiveAttrib 参数program和活动属性变量的索引
glGetAttribLocation 参数program和属性变量名
glGetVertexAttrib 参数GL_CURRENT_VERTEX_ATTRIB和index
另见
glBindAttribLocation,glVertexAttribPointer
版权
https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glVertexAttrib.xml
https://blog.csdn.net/flycatdeng
Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.