glvertexattribpointer()
时间: 2024-10-06 08:06:28 浏览: 19
`glVertexAttribPointer()` 是OpenGL ES 2.x及更高版本中用于设置顶点属性指针的重要函数。这个函数的主要作用是在OpenGL上下文中关联一个顶点属性位置(比如顶点位置、法线、纹理坐标等)与显存中的特定数据区域。
当你有一个顶点数组时,`glVertexAttribPointer()` 允许你指定哪一部分数据对应于哪个顶点属性,以及这个属性的数据类型(如浮点数、整数等)、大小、是否启用增量加载等信息。其基本语法如下:
```cpp
void glVertexAttribPointer(
GLuint index, // 属性索引,从0开始计数
GLint size, // 数据类型的数量(例如,对于单精度浮点数,size为4)
GLenum type, // 数据类型,如GL_FLOAT,GL_BYTE等
GLboolean normalized, // 是否归一化(对于浮点类型,通常为GL_FALSE)
GLsizei stride, // 单个顶点数据在内存中的字节数
const void* pointer // 指向包含数据的缓冲区的指针
);
```
这里的参数解释如下:
- `index`:指定你要操作的顶点属性的位置。
- `size`:属性的组件数量,如3个分量表示的是一个三维顶点。
- `type`:属性的数据类型,如GL_FLOAT、GL_INT、GL_SHORT等。
- `normalized`:如果是归一化的数据类型(如纹理坐标),设置为GL_TRUE;非归一化的类型则为GL_FALSE。
- `stride`:一个顶点数据块在缓冲区中的偏移量,如果相同则可以设为0(GL_NONE),表示连续存储。
- `pointer`:指向包含顶点属性数据的缓冲区地址。
使用`glVertexAttribPointer()` 后,还需要调用` glEnableVertexAttribArray(index)` 来启用该属性,然后在绘制时会自动读取这些配置好的数据进行渲染。
阅读全文