00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __NURBSTEXTURECOORDINATE_H__
00030 #define __NURBSTEXTURECOORDINATE_H__
00031
00032 #include "X3DGeometricPropertyNode.h"
00033 #include "MFVec2f.h"
00034 #include "MFFloat.h"
00035 #include "SFInt32.h"
00036 #include "MFDouble.h"
00037 #include "GL/glew.h"
00038
00039 namespace H3D {
00040
00060
00061
00062
00063
00064 class H3DAPI_API NurbsTextureCoordinate :
00065 public X3DGeometricPropertyNode {
00066 public:
00067
00069 void renderTexForNurbs( GLUnurbsObj *nurbs_object );
00070
00072 ~NurbsTextureCoordinate(){
00073 if(u_knots != NULL )
00074 delete [] u_knots;
00075 if(v_knots != NULL )
00076 delete [] v_knots;
00077 if(withWeights != NULL )
00078 delete [] withWeights;}
00079
00081 NurbsTextureCoordinate( Inst< SFNode > _metadata = 0,
00082 Inst< MFVec2f > _controlPoint = 0,
00083 Inst< MFFloat > _weight = 0,
00084 Inst< SFInt32 > _uDimension = 0,
00085 Inst< SFInt32 > _vDimension = 0,
00086 Inst< MFDouble > _uKnot = 0,
00087 Inst< MFDouble > _vKnot = 0,
00088 Inst< SFInt32 > _uOrder = 0,
00089 Inst< SFInt32 > _vOrder = 0 );
00090
00094 virtual string defaultXMLContainerField() {
00095 return "texCoord";
00096 }
00097
00109 auto_ptr< MFVec2f > controlPoint;
00110
00123 auto_ptr< MFFloat > weight;
00124
00131 auto_ptr< SFInt32 > uDimension;
00132
00139 auto_ptr< SFInt32 > vDimension;
00140
00146 auto_ptr< MFDouble > uKnot;
00147
00153 auto_ptr< MFDouble > vKnot;
00154
00161 auto_ptr< SFInt32 > uOrder;
00162
00169 auto_ptr< SFInt32 > vOrder;
00170
00172 static H3DNodeDatabase database;
00173
00174 protected:
00175
00176 GLfloat * withWeights;
00177 GLfloat * u_knots;
00178 GLfloat * v_knots;
00179 };
00180 }
00181
00182 #endif