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 __NURBSPATCHSURFACE_H__
00030 #define __NURBSPATCHSURFACE_H__
00031
00032 #include "X3DNurbsSurfaceGeometryNode.h"
00033
00034 namespace H3D {
00035
00116 class NurbsPatchSurface :
00117 public X3DNurbsSurfaceGeometryNode {
00118 public:
00119
00121 NurbsPatchSurface( Inst< SFNode > _metadata = 0,
00122 Inst< SFBound > _bound = 0,
00123 Inst< DisplayList > _displayList = 0,
00124 Inst< MFBool > _isTouched = 0,
00125 Inst< MFVec3f > _force = 0,
00126 Inst< MFVec3f > _contactPoint = 0,
00127 Inst< MFVec3f > _contactNormal = 0,
00128 Inst< SFCoordinateNode > _controlPoint = 0,
00129 Inst< TexCoordOrNurbsTex > _texCoord = 0,
00130 Inst< SFInt32 > _uTessellation = 0,
00131 Inst< SFInt32 > _vTessellation = 0,
00132 Inst< MFDouble > _weight = 0,
00133 Inst< SFBool > _solid = 0,
00134 Inst< SFBool > _uClosed = 0,
00135 Inst< SFBool > _vClosed = 0,
00136 Inst< SFInt32 > _uDimension = 0,
00137 Inst< SFInt32 > _vDimension = 0,
00138 Inst< MFDouble > _uKnot = 0,
00139 Inst< MFDouble > _vKnot = 0,
00140 Inst< SFInt32 > _uOrder = 0,
00141 Inst< SFInt32 > _vOrder = 0 );
00142
00145 virtual void renderBetweenBeginEnd(
00146 GLUnurbsObj *nurbs_object,
00147 X3DTextureCoordinateNode *tex_coord_node,
00148 TextureCoordinateGenerator *tex_coord_gen,
00149 NurbsTextureCoordinate *nurbs_tex_coord,
00150 GLfloat *texKnotU,
00151 GLfloat *texKnotV,
00152 GLfloat *texCoordinates,
00153 GLfloat *u_knots,
00154 GLfloat *v_knots,
00155 H3DInt32 &sizeOfVertex,
00156 GLfloat *withWeights,
00157 H3DInt32 &uSizeToUse,
00158 H3DInt32 &vSizeToUse,
00159 H3DInt32 &map2Vertex3Or4 );
00160
00161 #ifdef USE_HAPTICS
00164 virtual void traverseSG( TraverseInfo &ti );
00165 #endif
00166
00168 static H3DNodeDatabase database;
00169 };
00170 }
00171
00172 #endif