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

1.9 KiB

OpenGLVertexArray

命名空间: XCEngine::RHI

描述: OpenGL 顶点数组对象 (VAO) 封装。管理顶点属性配置和索引缓冲绑定。

概述

OpenGLVertexArray 封装了 OpenGL 顶点数组对象 (Vertex Array Object, VAO),用于:

  • 存储顶点属性配置
  • 绑定顶点缓冲区和索引缓冲区
  • 提供便捷的绑定/解绑接口

类型

类型 描述
VertexAttribute 顶点属性描述结构体

构造函数/析构函数

方法 描述
OpenGLVertexArray() 默认构造函数
~OpenGLVertexArray() 析构函数,调用 Shutdown() 释放资源

公共方法

方法 描述
Initialize 初始化顶点数组,生成 VAO
AddVertexBuffer 添加顶点缓冲并配置属性
SetIndexBuffer 设置索引缓冲
Shutdown 关闭顶点数组,释放 VAO 资源
Bind 绑定顶点数组到当前 OpenGL 上下文
Unbind 解绑顶点数组
GetID 获取 OpenGL VAO ID
GetIndexBuffer 获取索引缓冲区 ID
GetIndexCount 获取索引数量(需手动维护)

使用示例

// 创建 VAO
OpenGLVertexArray vao;
vao.Initialize();

// 添加顶点缓冲和属性
vao.AddVertexBuffer(vbo, positionAttr);
vao.AddVertexBuffer(vbo, normalAttr);
vao.AddVertexBuffer(vbo, texCoordAttr);

// 设置索引缓冲
vao.SetIndexBuffer(ibo, GL_UNSIGNED_INT);

// 绑定并绘制
vao.Bind();
glDrawElements(GL_TRIANGLES, indexCount, GL_UNSIGNED_INT, 0);
vao.Unbind();

// 销毁
vao.Shutdown();

相关文档