00001
00002
00003
00005
00006
00011
00016
00021
00023
00024 #ifndef CONEARRAY_H
00025 #define CONEARRAY_H
00026
00027 #include "X3DTypes.h"
00028 #include "X3DGLTypes.h"
00029
00030 #include <vector>
00031 #include <utility>
00032
00033 namespace X3DTK {
00034 namespace GL {
00035
00038
00039 class ConeDrawArray
00040 {
00041 public:
00043 static ConeDrawArray *getInstanceOfSection(unsigned int section);
00045 void removeInstance();
00046
00048 unsigned int getConeSideSize() const;
00050 unsigned int getConeBottomSize() const;
00051
00053 const void *getConeSideVertexArrayAddress() const;
00055 const void *getConeBottomVertexArrayAddress() const;
00056
00058 const unsigned int *getConeSideIndexArrayAddress() const;
00060 const unsigned int *getConeBottomIndexArrayAddress() const;
00061
00062 private:
00063 unsigned int _section;
00064
00066 ConeDrawArray(unsigned int section);
00067
00068 typedef struct
00069 {
00070 unsigned int count;
00071 ConeDrawArray *ref;
00072 } data;
00073
00074 typedef std::list<std::pair<unsigned int, data> > refList;
00075
00076 static refList _refList;
00077
00078 std::vector<N3F_V3F> _coneSideVertexArray;
00079 std::vector<N3F_V3F> _coneBottomVertexArray;
00080 std::vector<unsigned int> _coneSideIndexArray;
00081 std::vector<unsigned int> _coneBottomIndexArray;
00082 };
00083
00084 }
00085 }
00086
00087 #endif