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