Dandelion 1.1.1
A light-weight 3D builder for educational usage
|
对 OpenGL 顶点数组对象 (Vertex Array Object) 的封装。 更多...
#include <gl.hpp>
Public 成员函数 | |
VertexArrayObject () | |
VertexArrayObject (VertexArrayObject &other)=delete | |
VertexArrayObject & | operator= (VertexArrayObject &other)=delete |
VertexArrayObject (VertexArrayObject &&other) | |
~VertexArrayObject () | |
void | bind () |
void | release () |
void | draw (GLenum mode, int first, std::size_t count) |
Public 属性 | |
unsigned int | descriptor |
对 OpenGL 顶点数组对象 (Vertex Array Object) 的封装。
这个结构体只对 VAO 做了最基本的封装,稍微简化了手动构造和使用 VAO 的过程。由于此结构体的实例将持有 OpenGL VAO 的名字 (name) 或者叫描述符,它不允许被复制构造。
VertexArrayObject::VertexArrayObject | ( | ) |
构造函数将调用 glGenVertexArrays 创建一个 OpenGL VAO,其名字存储于 descriptor
属性中。
VertexArrayObject::VertexArrayObject | ( | VertexArrayObject && | other | ) |
移动构造函数是为满足 MoveInsertable 条件而写的,保证持有 VAO 的其他对象能使用 std::vector
之类的容器存储。此构造函数会将 other
的 descriptor
设置成 0,从而避免 other
析构时将真正的 OpenGL VAO 删除掉。
VertexArrayObject::~VertexArrayObject | ( | ) |
调用 glDeleteVertexArrays 删除 VAO。
void VertexArrayObject::bind | ( | ) |
绑定 VAO,仅用于更新它持有的 buffer 数据或格式时才需要专门调用。
void VertexArrayObject::draw | ( | GLenum | mode, |
int | first, | ||
std::size_t | count ) |
绘制这个 VAO 记录的所有内容,无需专门绑定和解绑。
void VertexArrayObject::release | ( | ) |
解绑 VAO。