1 #ifndef INCLUDE_AL_VAOMESH_HPP
2 #define INCLUDE_AL_VAOMESH_HPP
7 #include "al/graphics/al_BufferObject.hpp"
8 #include "al/graphics/al_Mesh.hpp"
9 #include "al/graphics/al_VAO.hpp"
13 #include <unordered_map>
18 enum AttribLayout :
unsigned int {
21 ATTRIB_TEXCOORD_2D = 2,
40 MeshAttrib(
unsigned int i,
int s) : index(i), size(s) {}
44 unsigned int GLPrimMode = GL_TRIANGLES;
46 MeshAttrib positionAtt{ATTRIB_POSITION, 3}, colorAtt{ATTRIB_COLOR, 4},
47 texcoord2dAtt{ATTRIB_TEXCOORD_2D, 2},
48 normalAtt{ATTRIB_NORMAL, 3}
54 std::shared_ptr<VAOWrapper> vaoWrapper;
63 VAO& vao() {
return vaoWrapper->vao; }
64 MeshAttrib& positionAtt() {
return vaoWrapper->positionAtt; }
65 MeshAttrib& colorAtt() {
return vaoWrapper->colorAtt; }
66 MeshAttrib& texcoord2dAtt() {
return vaoWrapper->texcoord2dAtt; }
67 MeshAttrib& normalAtt() {
return vaoWrapper->normalAtt; }
68 BufferObject& indexBuffer() {
return vaoWrapper->indexBuffer; }
76 void updateAttrib(std::vector<T>
const& data, MeshAttrib& att);
Stores buffers related to rendering graphical objects.
VAOMesh classStores gpu objects as shared pointer to that this class can be copied for moved this is ...