Kinetic Visualization
All Classes Functions Variables Pages
VertexGeometry.h
1 #pragma once
2 #include "Geometry.h"
3 
4 #include <GL\glew.h>
5 #include <glm\glm.hpp>
6 
7 class VertexGeometry : public Geometry
8 {
9 public:
10  /* Dieses Enum dient zur korrekten Zuordnung der VBO zu den In Objekte des Shaders (vertex-attrib).
11  Die Idee ist ein Dictionary (in Klasse View), welche jede in-Variable des Shaders dem VBO zuordnet.
12  Die VBOs werden durch das nachfolgende Enum erkannt.
13  Also wenn im Dictionary ein AT-POSITIONS drinnen steht, wei� die Engine, dass das Positions-VBO
14  ben�tzt werden soll.
15 
16  Um noch weitere VBOs zu unterst�tzen (Tangenten, Binormale, etc.), muss einerseits dieses Array
17  erweitert werden, die VBOs erstellt werden und im DrawVertexGeometry erweitert werden (das switch). */
18  enum ArrayType
19  {
20  AT_POSITIONS=0,
21  AT_NORMALS=1,
22  AT_TEXCOORD=2,
23  AT_ANIMATION=3,
24  AT_COLORS=4,
25  AT_TEXCOORD1 = 5,
26  AT_TEXCOORD2 = 6,
27  AT_TEXCOORD3 = 7,
28  AT_TEXCOORD4 = 8,
29  };
30 
31 public:
35  VertexGeometry(void);
41  VertexGeometry(int vertsize, int trigSize);
54  VertexGeometry(glm::vec4* positionsArray, glm::vec3* normalArray, glm::vec4* colors, glm::vec2* texCoord, glm::vec4* texCoord1, glm::vec4* texCoord2, int* indexArray, int vertsize, int trigSize);
66  VertexGeometry(glm::vec4* positionsArray, glm::vec3* normalArray, glm::vec2* texCoord, glm::vec4* texCoord1, glm::vec4* texCoord2, int* indexArray, int vertsize, int trigsize);
76  VertexGeometry(glm::vec4* positionsArray, glm::vec3* normalArray, glm::vec2* texCoord, glm::vec4* colors, int* indexArray, int vertsize, int trigsize);
80  VertexGeometry(glm::vec4* positionsArray, glm::vec3* normalArray, glm::vec2* texCoord, glm::vec4* bones_weights, glm::vec4* bones_indices, glm::mat4* bones_matrizen, int* indexArray, int vertsize, int trigsize, int bonesize);
84  VertexGeometry(glm::vec4* positionsArray, glm::vec3* normalArray, glm::vec2* texCoord, glm::vec4** animation, int* indexArray, int vertsize, int trigsize, int animationsize);
88  ~VertexGeometry(void);
89 
93  const bool operator<(VertexGeometry i) const;
97  const bool operator<(VertexGeometry* i) const;
98 
102  void Update(float* positionsArray);
103 
107  void BuildVBO();
108 
112  void Update(float time, float duration);
113 
114  glm::vec4* m_PositionArray;
115  unsigned int* m_IndexArray;
116  glm::vec3* m_NormalArray;
117  glm::vec4* m_ColorArray;
118 
119  glm::mat4* m_OffsetMatrix;
120 
121  std::map<unsigned int, glm::vec4*> m_TextureCoords;
122  std::map<unsigned int, glm::vec4*> m_AnimationVertex;
123 
124  unsigned int m_normal_count;
125  unsigned int m_color_count;
126  unsigned int m_vertex_count;
127  unsigned int m_index_count;
128  unsigned int m_animation_count;
129 
130  unsigned int m_vbovert;
131  unsigned int m_vbonorm;
132  unsigned int m_vbocolor;
133  std::map<unsigned int, unsigned int> m_vbo_tex;
134  std::map<unsigned int, unsigned int> m_vbo_animation;
135 
136  unsigned int m_vboind;
137  unsigned int m_vao_id;
138  unsigned int m_geometrytype;
139 
140  float distToCam;
141 
142  bool update_bones;
143 
144 };
145