Name

glVertexAttribPointer — 定义顶点属性数组

C Specification

void glVertexAttribPointer( GLuint index,
  GLint size,
  GLenum type,
  GLboolean normalized,
  GLsizei stride,
  const GLvoid * pointer);
 

Parameters

index

指定要修改的顶点属性的索引值

size

指定每个顶点属性的组件数量。必须为1、2、3或者4。初始值为4。(梦维:如position是由3个(x,y,z)组成,而颜色是4个(r,g,b,a))

type

指定数组中每个组件的数据类型。可用的符号常量有GL_BYTEGL_UNSIGNED_BYTEGL_SHORT,GL_UNSIGNED_SHORTGL_FIXED, 和 GL_FLOAT,初始值为GL_FLOAT。

normalized

指定当被访问时,固定点数据值是否应该被归一化(GL_TRUE)或者直接转换为固定点值(GL_FALSE)。

stride

指定连续顶点属性之间的偏移量。如果为0,那么顶点属性会被理解为:它们是紧密排列在一起的。初始值为0。

pointer

指定一个指针,指向数组中第一个顶点属性的第一个组件。初始值为0。

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.)

当一个顶点属性数组被指定时,除了当前的顶点数组缓冲对象绑定,sizetypenormalizedstride, 和 pointer 也会被存为客户端状态

要启用或者禁用顶点属性数组,调用glEnableVertexAttribArrayglDisableVertexAttribArray传入参数index。如果启用,那么当glDrawArrays或者glDrawElements被调用时,顶点属性数组会被使用。

Notes

glDrawArrays或者glDrawElements被调用时,每个顶点属性数组初始状态是禁用的,不会被访问。

glVertexAttribPointer一般在客户端实现。

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

评论模块尚未加载