Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/test/src/lib/graphics/importer/vertex_array_model.h

Last change on this file was 9869, checked in by bensch, 18 years ago

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

File size: 2.4 KB
Line 
1/*!
2 * @file vertex_array_model.h
3 * @brief Contains the VertexArrayModel Class that handles 3D-Models rendered out of VertexArrays
4 */
5
6#ifndef _VERTEX_ARRAY_MODEL_H
7#define _VERTEX_ARRAY_MODEL_H
8
9#include "model.h"
10
11#include "glincl.h"
12#include "vector2D.h"
13
14#include <vector>
15
16/* Forward Declaration */
17class Material;
18
19
20/////////////
21/// MODEL ///
22/////////////
23//! Class that handles 3D-Models. it can also read them in and display them.
24/**
25 * this renders models with help of the OpenGL glVertexArray
26 */
27class VertexArrayModel : public Model
28{
29  ObjectListDeclaration(VertexArrayModel);
30  public:
31  VertexArrayModel();
32  VertexArrayModel(const Model& model);
33  virtual ~VertexArrayModel();
34
35  void draw() const;
36
37
38  void newStripe();
39
40  void addVertex(float x, float y, float z);
41  void addNormal(float x, float y, float z);
42  void addTexCoor(float u, float v);
43  void addColor(float r, float g, float b);
44
45  void addIndice(GLuint indice);
46
47  void finalize();
48
49  unsigned int vertexCount() const { return this->vertices.size(); };
50  unsigned int normalCount() const { return this->normals.size(); };
51  unsigned int texCoordCount() const { return this->texCoords.size(); };
52  unsigned int colorCount() const { return this->colors.size(); };
53  unsigned int indiceCount() const { return this->indices.size(); };
54
55  Vector& vertex(unsigned int i) { return this->vertices[i]; };
56  Vector& normal(unsigned int i) { return this->normals[i]; };
57  Vector2D& texCoord(unsigned int i) { return this->texCoords[i]; };
58  Vector& color(unsigned int i) { return this->colors[i]; };
59  GLuint  index(unsigned int i) { return this->indices[i]; };
60  //
61  void planeModel(float sizeX, float sizeY, unsigned int resolutionX, unsigned int resolutionY);
62  void spiralSphere(const float radius, const unsigned int loops, const unsigned int segmentsPerLoop);
63
64  void debug() const;
65
66 private:
67  void importToVertexArray();
68
69 private:
70  std::vector<Vector>        vertices;        //!< The Array that handles the Vertices.
71  std::vector<Vector>        normals;         //!< The Array that handles the Normals.
72  std::vector<Vector2D>      texCoords;       //!< The Array that handles the VertexTextureCoordinates.
73  std::vector<Vector>        colors;          //!< The Array that handles Colors.
74
75  std::vector<GLuint>        indices;         //!< The Array that tells us what Vertex is connected to which other one.
76
77  std::vector<GLuint>        stripes;         //!< A lsit of Stripes of this Model.
78
79};
80
81#endif
Note: See TracBrowser for help on using the repository browser.