![]() |
Dandelion 1.1.2
A light-weight 3D builder for educational usage
|
对 OpenGL 索引数组缓冲 (Element Array Buffer) 的封装。 更多...
#include <gl.hpp>
Public 成员函数 | |
ElementArrayBuffer (unsigned int buffer_usage) | |
构造一个 EBO 对象。 | |
ElementArrayBuffer (const ElementArrayBuffer &other)=delete | |
ElementArrayBuffer & | operator= (ElementArrayBuffer &other)=delete |
ElementArrayBuffer (ElementArrayBuffer &&other) | |
~ElementArrayBuffer () | |
调用 glDeleteBuffers 销毁该 EBO。 | |
template<typename... Ts> | |
void | append (Ts... values) |
std::size_t | count () const |
void | bind () |
void | release () |
void | to_gpu () |
Public 属性 | |
unsigned int | descriptor |
unsigned int | usage |
std::vector< unsigned int > | data |
内存中的索引数据副本。 |
对 OpenGL 索引数组缓冲 (Element Array Buffer) 的封装。
Element Array Buffer 通常用于创建索引缓冲对象 (Element Buffer Object, EBO),用于存储顶点索引。 EBO 通常保存边或者面对应的顶点索引,从而避免多次存储重复的顶点数据。 ElementArrayBuffer 对象持有内存索引数据副本。如果希望更新显存中的数据, 首先应当直接修改它的 data 成员,然后调用 to_gpu 复制到显存。
遵循 OpenGL 的规范,ElementArrayBuffer 只允许使用 unsigned int 存储索引, 不允许指定其他的索引数据类型。
size | 每个基元(边或者面)对应的顶点索引个数,例如三角形面的 size 是 3。 |
GL::ElementArrayBuffer< size >::ElementArrayBuffer | ( | unsigned int | buffer_usage | ) |
构造一个 EBO 对象。
buffer_usage | 该对象的使用方式,可以是 GL_STATIC_DRAW / GL_DYNAMIC_DRAW / GL_STREAM_DRAW 其中之一。该信息只作为 hint,没有强制力。 |
|
delete |
禁止拷贝构造。
GL::ElementArrayBuffer< size >::ElementArrayBuffer | ( | ElementArrayBuffer< size > && | other | ) |
参考 VertexArrayObject 的移动构造函数。
void GL::ElementArrayBuffer< size >::append | ( | Ts... | values | ) |
将 size 个数据附加到末尾。
void GL::ElementArrayBuffer< size >::bind | ( | ) |
绑定该 EBO。
std::size_t GL::ElementArrayBuffer< size >::count | ( | ) | const |
统计总共有多少个 基元 (而不是顶点)。
|
delete |
禁止拷贝赋值。
void GL::ElementArrayBuffer< size >::release | ( | ) |
解绑该 EBO。
void GL::ElementArrayBuffer< size >::to_gpu | ( | ) |
将内存数据复制到显存,已包含绑定操作,但不包含解绑操作。
std::vector<unsigned int> GL::ElementArrayBuffer< size >::data |
内存中的索引数据副本。
使用 unsigned int 而非 size_t 的原因是 OpenGL 不接受 size_t。
unsigned int GL::ElementArrayBuffer< size >::descriptor |
OpenGL EBO 名字 (name),该对象的唯一标识。
unsigned int GL::ElementArrayBuffer< size >::usage |
该 EBO 的使用方式,见构造函数说明。