Dandelion 1.1.2
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
GL::ElementArrayBuffer< size > 模板结构体 参考

对 OpenGL 索引数组缓冲 (Element Array Buffer) 的封装。 更多...

#include <gl.hpp>

Public 成员函数

 ElementArrayBuffer (unsigned int buffer_usage)
 构造一个 EBO 对象。
 ElementArrayBuffer (const ElementArrayBuffer &other)=delete
ElementArrayBufferoperator= (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
 内存中的索引数据副本。

详细描述

template<std::size_t size>
struct GL::ElementArrayBuffer< size >

对 OpenGL 索引数组缓冲 (Element Array Buffer) 的封装。

Element Array Buffer 通常用于创建索引缓冲对象 (Element Buffer Object, EBO),用于存储顶点索引。 EBO 通常保存边或者面对应的顶点索引,从而避免多次存储重复的顶点数据。 ElementArrayBuffer 对象持有内存索引数据副本。如果希望更新显存中的数据, 首先应当直接修改它的 data 成员,然后调用 to_gpu 复制到显存。

遵循 OpenGL 的规范,ElementArrayBuffer 只允许使用 unsigned int 存储索引, 不允许指定其他的索引数据类型。

模板参数
size每个基元(边或者面)对应的顶点索引个数,例如三角形面的 size 是 3。

构造及析构函数说明

◆ ElementArrayBuffer() [1/3]

template<std::size_t size>
GL::ElementArrayBuffer< size >::ElementArrayBuffer ( unsigned int buffer_usage)

构造一个 EBO 对象。

参数
buffer_usage该对象的使用方式,可以是 GL_STATIC_DRAW / GL_DYNAMIC_DRAW / GL_STREAM_DRAW 其中之一。该信息只作为 hint,没有强制力。

◆ ElementArrayBuffer() [2/3]

template<std::size_t size>
GL::ElementArrayBuffer< size >::ElementArrayBuffer ( const ElementArrayBuffer< size > & other)
delete

禁止拷贝构造。

◆ ElementArrayBuffer() [3/3]

template<std::size_t size>
GL::ElementArrayBuffer< size >::ElementArrayBuffer ( ElementArrayBuffer< size > && other)

参考 VertexArrayObject 的移动构造函数。

成员函数说明

◆ append()

template<std::size_t size>
template<typename... Ts>
void GL::ElementArrayBuffer< size >::append ( Ts... values)

size 个数据附加到末尾。

◆ bind()

template<std::size_t size>
void GL::ElementArrayBuffer< size >::bind ( )

绑定该 EBO。

◆ count()

template<std::size_t size>
std::size_t GL::ElementArrayBuffer< size >::count ( ) const

统计总共有多少个 基元 (而不是顶点)。

◆ operator=()

template<std::size_t size>
ElementArrayBuffer & GL::ElementArrayBuffer< size >::operator= ( ElementArrayBuffer< size > & other)
delete

禁止拷贝赋值。

◆ release()

template<std::size_t size>
void GL::ElementArrayBuffer< size >::release ( )

解绑该 EBO。

◆ to_gpu()

template<std::size_t size>
void GL::ElementArrayBuffer< size >::to_gpu ( )

将内存数据复制到显存,已包含绑定操作,但不包含解绑操作。

类成员变量说明

◆ data

template<std::size_t size>
std::vector<unsigned int> GL::ElementArrayBuffer< size >::data

内存中的索引数据副本。

使用 unsigned int 而非 size_t 的原因是 OpenGL 不接受 size_t

◆ descriptor

template<std::size_t size>
unsigned int GL::ElementArrayBuffer< size >::descriptor

OpenGL EBO 名字 (name),该对象的唯一标识。

◆ usage

template<std::size_t size>
unsigned int GL::ElementArrayBuffer< size >::usage

该 EBO 的使用方式,见构造函数说明。


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