2016-09-15 15:23:02 +00:00
|
|
|
#include <include/glclasses.h>
|
|
|
|
|
2016-09-25 20:24:04 +00:00
|
|
|
#define TBufferObject_(pre, post) template <GLenum T> pre endofthejedi::BufferObject<T>::post
|
2016-09-15 15:23:02 +00:00
|
|
|
#define TBufferObject(...) TBufferObject_(__VA_ARGS__)
|
|
|
|
|
|
|
|
TBufferObject(, BufferObject)() {
|
|
|
|
glGenBuffers(1, &m_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(, ~BufferObject)() {
|
|
|
|
glDeleteBuffers(1, m_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, bind)() {
|
|
|
|
glBindBuffer(T, m_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, bind)(GLuint index, GLintptr offset, GLsizeiptr size) {
|
|
|
|
//todo
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, fill)(GLenum usage, GLsizei size, GLvoid* data) {
|
|
|
|
glBufferData(T, size, data, usage);
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, subfill)(GLintptr offset, GLsizei size, const GLvoid* data) {
|
|
|
|
glBufferSubData(T, offset, size, data);
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, map)(GLenum access) {
|
|
|
|
//todo
|
|
|
|
}
|
|
|
|
|
|
|
|
TBufferObject(void, unmap)() {
|
|
|
|
//todo
|
|
|
|
}
|
|
|
|
|
2016-09-25 20:24:04 +00:00
|
|
|
endofthejedi::VAO::VAO() {
|
|
|
|
glGenVertexArrays(1, &m_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
endofthejedi::VAO::~VAO() {
|
|
|
|
glDeleteVertexArrays(1, &m_name);
|
|
|
|
}
|
2016-09-15 15:23:02 +00:00
|
|
|
|
2016-09-25 20:24:04 +00:00
|
|
|
void endofthejedi::VAO::bind() {
|
|
|
|
glBindVertexArray(m_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
void endofthejedi::VAO::fill(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer) {
|
|
|
|
glEnableVertexAttribArray(index);
|
|
|
|
glVertexAttribPointer(index, size, GL_FLOAT, normalized, stride, pointer);
|
|
|
|
}
|