Files
XCEngine/docs/api/XCEngine/RHI/OpenGL/OpenGLVertexArray/OpenGLVertexArray.md

2.4 KiB
Raw Blame History

OpenGLVertexArray

命名空间: XCEngine::RHI

类型: class

头文件: XCEngine/RHI/OpenGL/OpenGLVertexArray.h

描述: OpenGL 后端的轻量 VAO 封装,用于保存顶点属性布局和索引缓冲绑定。

概览

OpenGLVertexArray 是一个非常直接的原生 VAO 包装器。它主要负责三件事:

  • 创建 VAO
  • 往 VAO 里写顶点属性描述
  • 记录一个索引缓冲对象 ID

它不是完整的现代输入装配系统,也不是跨后端 InputLayout 的全部落地点。当前引擎里更完整的绘制路径仍然依赖 OpenGLCommandListOpenGLPipelineState 和更高层的输入布局描述。

当前实现的真实行为

  • Initialize 只调用 glGenVertexArrays
  • AddVertexBuffer 统一走 glVertexAttribPointer
  • SetIndexBuffer 会绑定 GL_ELEMENT_ARRAY_BUFFER,但 type 参数当前被忽略
  • GetIndexCount 当前没有实际意义,因为 m_indexCount 从未更新
  • Shutdown 只删除 VAO不会清空 m_indexBufferm_indexCountm_vertexBufferCount

设计背景

VAO 属于典型的 OpenGL 原生状态对象。把它保留为一个单独的小封装,有两个实际好处:

  • 测试和 OpenGL 专用样例代码可以直接操作它
  • 上层不必每次都重复写一遍 VAO 创建与属性配置样板代码

但从商业级引擎角度看,它更像“后端工具层”,而不是长期唯一的输入装配抽象。

生命周期

当前限制

  • 不区分浮点、整数、双精度属性专用写入路径
  • 不维护真实索引数量
  • type 参数只保留接口形状,没有参与行为
  • 缺少错误处理和状态校验

关键方法

相关文档