20 #ifndef OMNI_VISUAL_VBO_H
21 #define OMNI_VISUAL_VBO_H
23 #include <QOpenGLContext>
43 template<
typename BUF>
46 _.glBindBuffer(GL_ARRAY_BUFFER,
id());
48 _.glBufferData(GL_ARRAY_BUFFER,
49 _buf.size() *
sizeof(
typename BUF::value_type),
53 _.glBindBuffer(GL_ARRAY_BUFFER, 0);
58 template<
typename BUF>
61 _.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
id());
63 _.glBufferData(GL_ELEMENT_ARRAY_BUFFER,
64 _buf.size() *
sizeof(
typename BUF::value_type),
68 _.glBindBuffer(GL_ARRAY_BUFFER, 0);
A small Vertex Buffer Object class.
Definition: VBO.h:29
void freeAndGen()
Free the existing buffer generates a new one.
Definition: VBO.cpp:47
void bufferStaticElementArray(BUF const &_buf)
Copy static index array onto GPU.
Definition: VBO.h:59
void free()
Free VBO via glDeleteBuffers.
Definition: VBO.cpp:56
~VBO()
Destructor. Frees VBO if necessary.
Definition: VBO.cpp:33
void withCurrentContext(ContextFunctor f)
Do OpenGL operations with current context, if it exists.
Definition: ContextSwitch.cpp:45
GLuint id() const
Return buffer id.
Definition: VBO.cpp:65
GLuint id_
Definition: VBO.h:79
VBO()
Definition: VBO.cpp:28
void gen()
Generate a new VBO and get the associated ID.
Definition: VBO.cpp:38
void bufferStaticArray(BUF const &_buf)
Copy static vertex array onto GPU.
Definition: VBO.h:44