1 #ifndef INCLUDE_AL_EASYVAO_HPP
2 #define INCLUDE_AL_EASYVAO_HPP
14 #include "al/graphics/al_BufferObject.hpp"
15 #include "al/graphics/al_VAO.hpp"
26 enum AttribLayout :
unsigned int {
35 enum AttribDimension :
unsigned int {
36 DIMENSION_POSITION = 3,
38 DIMENSION_TEXCOORD = 2,
44 unsigned int layoutIndex;
45 unsigned int dataDimension;
48 : layoutIndex(i), dataDimension(d) {}
51 void update(
void* data,
size_t typeSize,
size_t arraySize,
MeshAttrib& attrib,
52 unsigned int dataType = GL_FLOAT);
55 void updatePosition(T* data,
int arraySize,
56 unsigned int dataType = GL_FLOAT) {
57 mNumVertices =
static_cast<int>(arraySize);
58 update(data,
sizeof(T), arraySize, mPositionAtt, dataType);
62 void updateColor(T* data,
size_t arraySize,
63 unsigned int dataType = GL_FLOAT) {
64 update(data,
sizeof(T), arraySize, mColorAtt, dataType);
68 void updateTexcoord(T* data,
size_t arraySize,
69 unsigned int dataType = GL_FLOAT) {
70 update(data,
sizeof(T), arraySize, mTexcoord2dAtt, dataType);
74 void updateNormal(T* data,
size_t arraySize,
75 unsigned int dataType = GL_FLOAT) {
76 update(data,
sizeof(T), arraySize, mNormalAtt, dataType);
80 void updateIndices(
const unsigned int* data,
size_t size);
83 void primitive(
unsigned int prim);
87 void updateWithoutBinding(
const void* data,
size_t typeSize,
size_t arraySize,
89 unsigned int dataType = GL_FLOAT);
91 unsigned int mGLPrimMode = GL_TRIANGLES;
94 MeshAttrib mPositionAtt{LAYOUT_POSITION, DIMENSION_POSITION},
95 mColorAtt{LAYOUT_COLOR, DIMENSION_COLOR},
96 mTexcoord2dAtt{LAYOUT_TEXCOORD, DIMENSION_TEXCOORD},
97 mNormalAtt{LAYOUT_NORMAL, DIMENSION_NORMAL};
99 BufferObject mIndexBuffer;