Gl Graph
Gl Graph Source of globjectdata.h
#ifndef GL_OBJECTDATA_H
#define GL_OBJECTDATA_H
#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glx.h>
#include <GL/glxext.h>
#include <GL/glut.h>
#include <unordered_map>
#include "glversion.h"
#include "glprimitive.h"
class GlObjectData {
protected:
GlVersion * glVersion;
GLuint vao;
GLuint vbo;
GLenum dataKind;
int bufferDataSize;
int normalDataSize;
int colorDataSize;
int vectexDataSize;
bool isNormalDataChanged;
bool isColorDataChanged;
bool isVectexDataChanged;
std::vector<float> normaldata;
std::vector<float> colordata;
std::vector<float> vertexdata;
std::vector<int> indexdata;
std::unordered_map<std::string, std::string> * args;
bool isVaoForced ;
bool isVboForced ;
bool isVaForced;
void initGl3_3_0();
void initGl2();
void initGlOld();
void updateData();
void updateDataGl3_3_0();
void updateDataGl2();
void updateDataGlOld();
void internalDraw();
void printGlError(const char * msg);
void reset();
public:
GlObjectData();
GlObjectData(GLenum dataKind,std::unordered_map<std::string, std::string> * args);
void init(GlVersion * glVersion);
void draw();
void addNormalData(float val);
void addColorData(float val);
void addVertexData(float val);
void addNormalData(float val1,float val2,float val3);
void addColorData(float val1,float val2,float val3);
void addVertexData(float val1,float val2,float val3);
void addNormalData(Vec3f &vec);
void addColorData(Vec3f &vec);
void addVertexData(Vec3f &vec);
void setNormalData(int index,Vec3f &vec);
void setColorData(int index,Vec3f &vec);
void setVertexData(int index,Vec3f &vec);
unsigned int getNbVertex() const ;
unsigned int getNbColorVertex() const;
unsigned int getNbNormalVertex() const;
};
class GlLineData : public GlObjectData {
public:
GlLineData() {};
GlLineData(std::unordered_map<std::string, std::string> * args);
void addLineNormalData(GlNormalLine &normalLine);
void addLineColorData (GlColorLine &colorLine);
void addLineVertexData(GlLine &line);
};
class GlLineStripData : public GlObjectData {
public:
GlLineStripData() {};
GlLineStripData(std::unordered_map<std::string, std::string> * args);
void addLineNormalData(Vec3f &vec1);
void addLineColorData (Vec3f &vec1);
void addLineVertexData(Vec3f &vec1);
};
class GlTriangleData : public GlObjectData {
public:
GlTriangleData() {};
GlTriangleData(std::unordered_map<std::string, std::string> * args);
void addTriangleNormalData(GlNormalTriangle &normalTriangle);
void addTriangleColorData (GlColorTriangle &colorTriangle);
void addTriangleVertexData(GlTriangle &triangle);
};
class GlQuadData : public GlObjectData {
public:
GlQuadData() {};
GlQuadData(std::unordered_map<std::string, std::string> * args);
void addQuadNormalData(GlNormalQuad &normalQuad);
void addQuadColorData (GlColorQuad &colorQuad);
void addQuadVertexData(GlQuad &quad);
void setQuadNormalData(int index,GlNormalQuad &normalQuad);
void setQuadColorData (int index,GlColorQuad &colorQuad);
void setQuadVertexData(int index,GlQuad &quad);
};
#endif