Name
glVertexAttribPointer — 定义顶点属性数组
C Specification
void glVertexAttribPointer( | GLuint index, |
GLint size, | |
GLenum type, | |
GLboolean normalized, | |
GLsizei stride, | |
const GLvoid * pointer) ; |
Parameters
-
指定要修改的顶点属性的索引值
-
指定每个顶点属性的组件数量。必须为1、2、3或者4。初始值为4。(梦维:如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a))
-
指定数组中每个组件的数据类型。可用的符号常量有
GL_BYTE
,GL_UNSIGNED_BYTE
,GL_SHORT
,GL_UNSIGNED_SHORT
,GL_FIXED
, 和GL_FLOAT
,初始值为GL_FLOAT。 -
指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE)。
-
指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。
-
指定一个指针,指向数组中第一个顶点属性的第一个组件。初始值为0。
index
size
type
normalized
stride
pointer
Description
glVertexAttribPointer
指定了渲染时索引值为 index
的顶点属性数组的数据格式和位置。size
指定每个属性值的组件数量且必须为1、2、3、4之一。type
指定每个组件的数据格式,stride
指定了一个属性到下一个属性之间的步长(这就允许属性值被存储在单一数组或者不同的数组中)。当数组中的值被访问并被转换至浮点值时,如果normalized
被设置为GL_TRUE,意味着整数型的值会被映射至区间[-1,1](有符号整数),或者区间[0,1](无符号整数),反之,这些值会被直接转换为浮点值而不进行归一化处理。
如果一个名称非零的缓冲对象被绑定至GL_ARRAY_BUFFER目标(见glBindBuffer)且此时一个定点属性数组被指定了,那么pointer
被当做该缓冲对象数据存储区的字节偏移量。并且,缓冲对象绑定(GL_ARRAY_BUFFER_BINDING)会被存为索引为index
的顶点属性数组客户端状态(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING);(Also, the buffer object binding (GL_ARRAY_BUFFER_BINDING
) is saved as generic vertex attribute array client-side state (GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
) for index index
.)
当一个顶点属性数组被指定时,除了当前的顶点数组缓冲对象绑定,size
, type
, normalized
, stride
, 和 pointer
也会被存为客户端状态
要启用或者禁用顶点属性数组,调用glEnableVertexAttribArray和glDisableVertexAttribArray传入参数index
。如果启用,那么当glDrawArrays或者glDrawElements被调用时,顶点属性数组会被使用。
Errors
GL_INVALID_ENUM
错误:如果 type
不是可接受的值。
GL_INVALID_VALUE错误:
如果 index
大于等于 GL_MAX_VERTEX_ATTRIBS
.
GL_INVALID_VALUE错误:
如果 size
不是 1, 2, 3, 或 4.
GL_INVALID_VALUE错误:
如果 stride
小于零.
Associated Gets
glGet 传入参数 GL_MAX_VERTEX_ATTRIBS
glGetVertexAttrib 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_ENABLED
glGetVertexAttrib 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_SIZE
glGetVertexAttrib 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_TYPE
glGetVertexAttrib 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
glGetVertexAttrib 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_STRIDE
glGetVertexAttrib 传入参数index
和 GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
glGet 传入参数 GL_ARRAY_BUFFER_BINDING
glGetVertexAttribPointerv 传入参数 index
和 GL_VERTEX_ATTRIB_ARRAY_POINTER