#ifndef __VERTEXDATA_H__ #define __VERTEXDATA_H__ namespace Geometry { class VertexData { private: unsigned int numverts; public: VertexData(unsigned int numv):numverts(numv){} virtual ~VertexData(void){} virtual void Begin(void)=0; virtual void SetVertexCoord(unsigned int i, float x, float y, float z)=0; virtual void SetVertexNormal(unsigned int i, float x, float y, float z)=0; virtual void SetVertexTexCoord(unsigned int i, float x, float y)=0; virtual void End(void)=0; virtual void GetVertexCoord(unsigned int i, float &x, float &y, float &z) const = 0; virtual void GetVertexNormal(unsigned int i, float &x, float &y, float &z) const = 0; virtual void GetVertexTexCoord(unsigned int i, float &x, float &y) const =0; unsigned int GetNumVertices(void) const { return numverts; } }; class IndexData { private: unsigned int numinds, numvalidinds; public: IndexData(unsigned int numi):numinds(numi),numvalidinds(numi){} virtual ~IndexData(void){} virtual void Begin(void)=0; virtual void SetIndex(unsigned int i, unsigned int index)=0; virtual void End(void)=0; virtual unsigned int GetIndex(unsigned int) const =0; unsigned int GetNumMaxIndices(void) const { return numinds; } unsigned int GetNumValidIndices(void) const { return numvalidinds; } void SetNumValidIndices(unsigned int valid){ numvalidinds=valid; } }; class MultiIndexData { private: unsigned int num_prims, num_total_inds, *num_max_inds, *num_valid_inds; public: MultiIndexData(unsigned int numprims, unsigned int *maxinds){ num_prims=numprims; num_total_inds=0; num_max_inds=new unsigned int[numprims]; num_valid_inds=new unsigned int[numprims]; for (unsigned int i=0; i