36 lines
777 B
C
36 lines
777 B
C
|
#pragma once
|
||
|
|
||
|
#include <epoxy/gl.h>
|
||
|
#include <epoxy/glx.h>
|
||
|
|
||
|
template <GLenum T> class BufferObject {
|
||
|
private:
|
||
|
GLuint m_name;
|
||
|
GLvoid* m_mappointer;
|
||
|
protected:
|
||
|
public:
|
||
|
BufferObject();
|
||
|
~BufferObject();
|
||
|
void bind();
|
||
|
void bind(GLuint index, GLintptr offset = 0, GLsizeiptr size = 0);
|
||
|
void fill(GLenum usage, GLsizei size = 0, GLvoid* data = NULL);
|
||
|
void subfill(GLintptr offset, GLsizei size, const GLvoid* data);
|
||
|
void map(GLenum access);
|
||
|
void unmap();
|
||
|
};
|
||
|
|
||
|
typedef BufferObject<GL_ARRAY_BUFFER> VBO;
|
||
|
typedef BufferObject<GL_ELEMENT_ARRAY_BUFFER> IBO;
|
||
|
|
||
|
class VAO {
|
||
|
private:
|
||
|
int[3] foo;
|
||
|
|
||
|
protected:
|
||
|
public:
|
||
|
VAO();
|
||
|
~VAO();
|
||
|
bind();
|
||
|
fill(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride = 0, const GLvoid* pointer = NULL);
|
||
|
}
|