Files
XCEngine/docs/api/rhi/opengl/vertex-array/add-vertex-buffer.md
2026-03-20 02:35:45 +08:00

1.5 KiB
Raw Blame History

OpenGLVertexArray::AddVertexBuffer

void AddVertexBuffer(unsigned int buffer, const VertexAttribute& attribute)

添加顶点缓冲区并配置顶点属性。

详细描述: 将顶点缓冲区绑定到 VAO并配置顶点属性的读取方式。调用时

  1. 绑定 VAO
  2. 绑定顶点缓冲区
  3. 启用顶点属性数组
  4. 使用 glVertexAttribPointer 配置属性格式
  5. 解绑缓冲区和 VAO

参数:

  • buffer - OpenGL 缓冲区对象 IDGL_ARRAY_BUFFER 类型)
  • attribute - 顶点属性描述结构体 VertexAttribute

示例:

// 位置属性 (对应着色器 layout(location = 0))
VertexAttribute attr;
attr.index = 0;
attr.count = 3;                    // xyz 三个分量
attr.type = GL_FLOAT;              // float 类型
attr.normalized = GL_FALSE;        // 不归一化
attr.stride = sizeof(Vertex);      // 顶点结构体大小
attr.offset = 0;                   // 位置在结构体起始处
vao.AddVertexBuffer(positionVBO, attr);

// 纹理坐标属性 (对应着色器 layout(location = 1))
VertexAttribute texAttr;
texAttr.index = 1;
texAttr.count = 2;                              // uv 两个分量
texAttr.type = GL_FLOAT;
texAttr.normalized = GL_FALSE;
texAttr.stride = sizeof(Vertex);
texAttr.offset = offsetof(Vertex, texCoord);    // 纹理坐标偏移
vao.AddVertexBuffer(texCoordVBO, texAttr);

相关文档