Dandelion 1.1.1
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
GL::VertexArrayObject结构体 参考

对 OpenGL 顶点数组对象 (Vertex Array Object) 的封装。 更多...

#include <gl.hpp>

Public 成员函数

 VertexArrayObject ()
 
 VertexArrayObject (VertexArrayObject &other)=delete
 
VertexArrayObjectoperator= (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() [1/2]

VertexArrayObject::VertexArrayObject ( )

构造函数将调用 glGenVertexArrays 创建一个 OpenGL VAO,其名字存储于 descriptor 属性中。

◆ VertexArrayObject() [2/2]

VertexArrayObject::VertexArrayObject ( VertexArrayObject && other)

移动构造函数是为满足 MoveInsertable 条件而写的,保证持有 VAO 的其他对象能使用 std::vector 之类的容器存储。此构造函数会将 otherdescriptor 设置成 0,从而避免 other 析构时将真正的 OpenGL VAO 删除掉。

◆ ~VertexArrayObject()

VertexArrayObject::~VertexArrayObject ( )

调用 glDeleteVertexArrays 删除 VAO。

成员函数说明

◆ bind()

void VertexArrayObject::bind ( )

绑定 VAO,仅用于更新它持有的 buffer 数据或格式时才需要专门调用。

◆ draw()

void VertexArrayObject::draw ( GLenum mode,
int first,
std::size_t count )

绘制这个 VAO 记录的所有内容,无需专门绑定和解绑。

◆ release()

void VertexArrayObject::release ( )

解绑 VAO。


该结构体的文档由以下文件生成: