00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __SGL_INDEXED_POINT_SET_HPP
00028 #define __SGL_INDEXED_POINT_SET_HPP
00029
00030 #include <sgl.h>
00031 #include <sglIndexedGeoSet.hpp>
00032
00033
00034
00038 class SGL_DLL_API sglIndexedPointSet : public sglIndexedGeoSet
00039 {
00040 public:
00042 sglIndexedPointSet();
00044 virtual ~sglIndexedPointSet();
00045
00047 sglStats::PrimEnum getPrimType() const {return sglStats::eINDEXED_POINTS;}
00049 GLenum getGLPrimType() const {return GL_POINTS;}
00051 unsigned int getPrimSize() const {return 1;}
00053 AAEnum getAAType() const {return ePOINT_AA;}
00054
00055 protected:
00056 virtual void updateDrawFunc();
00057
00058 private:
00059 sglIndexedPointSet(const sglIndexedPointSet &);
00060 sglIndexedPointSet &operator=(const sglIndexedPointSet &);
00061
00062 void drawVT(const vector<sglTexCoords> &tex_coords) const;
00063 void drawVNoT(const vector<sglTexCoords> &tex_coords) const;
00064 void drawVNvT(const vector<sglTexCoords> &tex_coords) const;
00065 void drawVCoT(const vector<sglTexCoords> &tex_coords) const;
00066 void drawVCoNoT(const vector<sglTexCoords> &tex_coords) const;
00067 void drawVCoNvT(const vector<sglTexCoords> &tex_coords) const;
00068 void drawVCvT(const vector<sglTexCoords> &tex_coords) const;
00069 void drawVCvNoT(const vector<sglTexCoords> &tex_coords) const;
00070 void drawVCvNvT(const vector<sglTexCoords> &tex_coords) const;
00071
00072 class Initializer;
00073 friend class Initializer;
00074 static void setupFuncTable();
00075
00076 private:
00077 static DrawFunc s_func_table[(eCOLORS|eNORMALS)+1];
00078 static Initializer sInitializer;
00079 };
00080
00081 #endif