Changeset 3079 for trunk/src/opengl/glu/nurbs/interface
- Timestamp:
- Mar 11, 2000, 10:05:07 AM (26 years ago)
- Location:
- trunk/src/opengl/glu/nurbs/interface
- Files:
-
- 7 edited
-
glcurveval.cpp (modified) (9 diffs)
-
glcurveval.h (modified) (5 diffs)
-
glinterface.cpp (modified) (12 diffs)
-
glrenderer.h (modified) (5 diffs)
-
glsurfeval.cpp (modified) (5 diffs)
-
glsurfeval.h (modified) (14 diffs)
-
insurfeval.cpp (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/opengl/glu/nurbs/interface/glcurveval.cpp
r2689 r3079 1 /* $Id: glcurveval.cpp,v 1. 1 2000-02-09 08:49:00jeroen Exp $ */1 /* $Id: glcurveval.cpp,v 1.2 2000-03-11 09:05:01 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 * glcurveval.c++ 38 38 * 39 * $Date: 2000-0 2-09 08:49:00 $ $Revision: 1.1$40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glcurveval.cpp,v 1. 1 2000-02-09 08:49:00jeroen Exp $39 * $Date: 2000-03-11 09:05:01 $ $Revision: 1.2 $ 40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glcurveval.cpp,v 1.2 2000-03-11 09:05:01 jeroen Exp $ 41 41 */ 42 42 … … 88 88 OpenGLCurveEvaluator::addMap(CurveMap *m) 89 89 { 90 m = m;90 m = m; 91 91 } 92 92 … … 94 94 OpenGLCurveEvaluator::range1f(long type, REAL *from, REAL *to) 95 95 { 96 type = type;97 from = from;98 to = to;96 type = type; 97 from = from; 98 to = to; 99 99 } 100 100 … … 102 102 OpenGLCurveEvaluator::domain1f(REAL ulo, REAL uhi) 103 103 { 104 ulo = ulo;105 uhi = uhi;104 ulo = ulo; 105 uhi = uhi; 106 106 } 107 107 … … 202 202 void 203 203 OpenGLCurveEvaluator::map1f( 204 long type, /* map type */205 REAL ulo, /* lower parametric bound */206 REAL uhi, /* upper parametric bound */207 long stride, /* distance to next point in REALS */208 long order, /* parametric order */209 REAL *pts /* control points */204 long type, /* map type */ 205 REAL ulo, /* lower parametric bound */ 206 REAL uhi, /* upper parametric bound */ 207 long stride, /* distance to next point in REALS */ 208 long order, /* parametric order */ 209 REAL *pts /* control points */ 210 210 ) 211 211 { … … 216 216 switch(type){ 217 217 case GL_MAP1_VERTEX_3: 218 which = 0;219 dimension = 3;220 break;218 which = 0; 219 dimension = 3; 220 break; 221 221 case GL_MAP1_VERTEX_4: 222 which=0;223 dimension = 4;224 break;222 which=0; 223 dimension = 4; 224 break; 225 225 case GL_MAP1_INDEX: 226 which=2;227 dimension = 1;228 break;226 which=2; 227 dimension = 1; 228 break; 229 229 case GL_MAP1_COLOR_4: 230 which=2;231 dimension = 4;232 break;230 which=2; 231 dimension = 4; 232 break; 233 233 case GL_MAP1_NORMAL: 234 which=1;235 dimension = 3;236 break;234 which=1; 235 dimension = 3; 236 break; 237 237 case GL_MAP1_TEXTURE_COORD_1: 238 which=3;239 dimension = 1;240 break;238 which=3; 239 dimension = 1; 240 break; 241 241 case GL_MAP1_TEXTURE_COORD_2: 242 which=3;243 dimension = 2;244 break;245 242 which=3; 243 dimension = 2; 244 break; 245 246 246 case GL_MAP1_TEXTURE_COORD_3: 247 which=3;248 dimension = 3;249 break;247 which=3; 248 dimension = 3; 249 break; 250 250 case GL_MAP1_TEXTURE_COORD_4: 251 which=3;252 dimension = 4;253 break; 251 which=3; 252 dimension = 4; 253 break; 254 254 } 255 inMap1f(which, dimension, ulo, uhi, stride, order, pts); 255 inMap1f(which, dimension, ulo, uhi, stride, order, pts); 256 256 } 257 257 else 258 258 glMap1f((GLenum) type, (GLfloat) ulo, (GLfloat) uhi, (GLint) stride, 259 (GLint) order, (const GLfloat *) pts);259 (GLint) order, (const GLfloat *) pts); 260 260 } 261 261 … … 276 276 case N_MESHFILL: 277 277 case N_MESHLINE: 278 glEvalMesh1((GLenum) GL_LINE, (GLint) from, (GLint) to);279 break;278 glEvalMesh1((GLenum) GL_LINE, (GLint) from, (GLint) to); 279 break; 280 280 case N_MESHPOINT: 281 glEvalMesh1((GLenum) GL_POINT, (GLint) from, (GLint) to);282 break;281 glEvalMesh1((GLenum) GL_POINT, (GLint) from, (GLint) to); 282 break; 283 283 } 284 284 } … … 304 304 305 305 void 306 OpenGLCurveEvaluator::putCallBack(GLenum which, GLvoid (GL API*fn)(...))306 OpenGLCurveEvaluator::putCallBack(GLenum which, GLvoid (GLCALLBACK *fn)(...)) 307 307 { 308 308 switch(which) 309 309 { 310 310 case GLU_NURBS_BEGIN: 311 beginCallBackN = (void (GL API*) (GLenum)) fn;311 beginCallBackN = (void (GLCALLBACK *) (GLenum)) fn; 312 312 break; 313 313 case GLU_NURBS_END: 314 endCallBackN = (void (GL API*) (void)) fn;314 endCallBackN = (void (GLCALLBACK *) (void)) fn; 315 315 break; 316 316 case GLU_NURBS_VERTEX: 317 vertexCallBackN = (void (GL API*) (const GLfloat*)) fn;317 vertexCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 318 318 break; 319 319 case GLU_NURBS_NORMAL: 320 normalCallBackN = (void (GL API*) (const GLfloat*)) fn;320 normalCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 321 321 break; 322 322 case GLU_NURBS_COLOR: 323 colorCallBackN = (void (GL API*) (const GLfloat*)) fn;323 colorCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 324 324 break; 325 325 case GLU_NURBS_TEXTURE_COORD: 326 texcoordCallBackN = (void (GL API*) (const GLfloat*)) fn;326 texcoordCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 327 327 break; 328 328 case GLU_NURBS_BEGIN_DATA: 329 beginCallBackData = (void (GL API*) (GLenum, void*)) fn;329 beginCallBackData = (void (GLCALLBACK *) (GLenum, void*)) fn; 330 330 break; 331 331 case GLU_NURBS_END_DATA: 332 endCallBackData = (void (GL API*) (void*)) fn;332 endCallBackData = (void (GLCALLBACK *) (void*)) fn; 333 333 break; 334 334 case GLU_NURBS_VERTEX_DATA: 335 vertexCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;335 vertexCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 336 336 break; 337 337 case GLU_NURBS_NORMAL_DATA: 338 normalCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;338 normalCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 339 339 break; 340 340 case GLU_NURBS_COLOR_DATA: 341 colorCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;341 colorCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 342 342 break; 343 343 case GLU_NURBS_TEXTURE_COORD_DATA: 344 texcoordCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;344 texcoordCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 345 345 break; 346 346 } -
trunk/src/opengl/glu/nurbs/interface/glcurveval.h
r2689 r3079 1 /* $Id: glcurveval.h,v 1. 1 2000-02-09 08:49:01jeroen Exp $ */1 /* $Id: glcurveval.h,v 1.2 2000-03-11 09:05:02 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 * glcurveval.h 38 38 * 39 * $Date: 2000-0 2-09 08:49:01 $ $Revision: 1.1$40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glcurveval.h,v 1. 1 2000-02-09 08:49:01jeroen Exp $39 * $Date: 2000-03-11 09:05:02 $ $Revision: 1.2 $ 40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glcurveval.h,v 1.2 2000-03-11 09:05:02 jeroen Exp $ 41 41 */ 42 42 … … 72 72 class OpenGLCurveEvaluator : public BasicCurveEvaluator { 73 73 public: 74 OpenGLCurveEvaluator(void);75 ~OpenGLCurveEvaluator(void);76 void range1f(long, REAL *, REAL *);77 void domain1f(REAL, REAL);78 void addMap(CurveMap *);74 OpenGLCurveEvaluator(void); 75 ~OpenGLCurveEvaluator(void); 76 void range1f(long, REAL *, REAL *); 77 void domain1f(REAL, REAL); 78 void addMap(CurveMap *); 79 79 80 void enable(long);81 void disable(long);82 void bgnmap1f(long);83 void map1f(long, REAL, REAL, long, long, REAL *);84 void mapgrid1f(long, REAL, REAL);85 void mapmesh1f(long, long, long);86 void evalpoint1i(long);87 void evalcoord1f(long, REAL);88 void endmap1f(void);80 void enable(long); 81 void disable(long); 82 void bgnmap1f(long); 83 void map1f(long, REAL, REAL, long, long, REAL *); 84 void mapgrid1f(long, REAL, REAL); 85 void mapmesh1f(long, long, long); 86 void evalpoint1i(long); 87 void evalcoord1f(long, REAL); 88 void endmap1f(void); 89 89 90 void bgnline(void);91 void endline(void);90 void bgnline(void); 91 void endline(void); 92 92 93 93 void put_vertices_call_back(int flag) 94 94 { 95 output_triangles = flag;95 output_triangles = flag; 96 96 } 97 void putCallBack(GLenum which, GLvoid (GL API*fn)(...));97 void putCallBack(GLenum which, GLvoid (GLCALLBACK *fn)(...)); 98 98 void set_callback_userData(void *data) 99 99 { 100 userData = data;100 userData = data; 101 101 } 102 102 … … 116 116 117 117 void inMap1f(int which, //0: vert, 1: norm, 2: color, 3: tex 118 int dimension,119 REAL ulower,120 REAL uupper,121 int ustride,122 int uorder,123 REAL *ctlpoints);118 int dimension, 119 REAL ulower, 120 REAL uupper, 121 int ustride, 122 int uorder, 123 REAL *ctlpoints); 124 124 125 125 void inPreEvaluate(int order, REAL vprime, REAL *coeff); … … 128 128 void inMapMesh1f(int umin, int umax); 129 129 130 void (GL API*beginCallBackN) (GLenum type);131 void (GL API*endCallBackN) (void);132 void (GL API*vertexCallBackN) (const GLfloat *vert);133 void (GL API*normalCallBackN) (const GLfloat *normal);134 void (GL API*colorCallBackN) (const GLfloat *color);135 void (GL API*texcoordCallBackN) (const GLfloat *texcoord);130 void (GLCALLBACK *beginCallBackN) (GLenum type); 131 void (GLCALLBACK *endCallBackN) (void); 132 void (GLCALLBACK *vertexCallBackN) (const GLfloat *vert); 133 void (GLCALLBACK *normalCallBackN) (const GLfloat *normal); 134 void (GLCALLBACK *colorCallBackN) (const GLfloat *color); 135 void (GLCALLBACK *texcoordCallBackN) (const GLfloat *texcoord); 136 136 137 void (GL API*beginCallBackData) (GLenum type, void* data);138 void (GL API*endCallBackData) (void* data);139 void (GL API*vertexCallBackData) (const GLfloat *vert, void* data);140 void (GL API*normalCallBackData) (const GLfloat *normal, void* data);141 void (GL API*colorCallBackData) (const GLfloat *color, void* data);142 void (GL API*texcoordCallBackData) (const GLfloat *texcoord, void* data);137 void (GLCALLBACK *beginCallBackData) (GLenum type, void* data); 138 void (GLCALLBACK *endCallBackData) (void* data); 139 void (GLCALLBACK *vertexCallBackData) (const GLfloat *vert, void* data); 140 void (GLCALLBACK *normalCallBackData) (const GLfloat *normal, void* data); 141 void (GLCALLBACK *colorCallBackData) (const GLfloat *color, void* data); 142 void (GLCALLBACK *texcoordCallBackData) (const GLfloat *texcoord, void* data); 143 143 144 void* userData; //the opaque pointer for Data callback functions145 void beginCallBack(GLenum type, void* data);144 void* userData; /* the opaque pointer for Data callback functions*/ 145 void beginCallBack(GLenum type, void* data); 146 146 void endCallBack(void* data); 147 147 void vertexCallBack(const GLfloat *vert, void *data); -
trunk/src/opengl/glu/nurbs/interface/glinterface.cpp
r2945 r3079 1 /* $Id: glinterface.cpp,v 1. 2 2000-02-29 13:56:48 sandervlExp $ */1 /* $Id: glinterface.cpp,v 1.3 2000-03-11 09:05:02 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 33 33 ** compliant with the OpenGL(R) version 1.2.1 Specification. 34 34 ** 35 ** $Date: 2000-0 2-29 13:56:48 $ $Revision: 1.2$35 ** $Date: 2000-03-11 09:05:02 $ $Revision: 1.3 $ 36 36 */ 37 37 /* 38 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glinterface.cpp,v 1. 2 2000-02-29 13:56:48 sandervlExp $38 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glinterface.cpp,v 1.3 2000-03-11 09:05:02 jeroen Exp $ 39 39 */ 40 40 … … 63 63 void glu_LOD_eval_list(GLUnurbs *nurb, int level) 64 64 { 65 nurb->LOD_eval_list(level);65 nurb->LOD_eval_list(level); 66 66 } 67 67 … … 152 152 void GLAPI 153 153 gluPwlCurve(GLUnurbs *r, GLint count, INREAL array[], 154 GLint stride, GLenum type)154 GLint stride, GLenum type) 155 155 { 156 156 #ifdef DOWN_LOAD_NURBS … … 161 161 switch(type) { 162 162 case GLU_MAP1_TRIM_2: 163 realType = N_P2D;164 break;163 realType = N_P2D; 164 break; 165 165 case GLU_MAP1_TRIM_3: 166 realType = N_P2DR;167 break;166 realType = N_P2DR; 167 break; 168 168 default: 169 realType = type;170 break;169 realType = type; 170 break; 171 171 } 172 172 r->pwlcurve(count, array, sizeof(INREAL) * stride, realType); … … 175 175 void GLAPI 176 176 gluNurbsCurve(GLUnurbs *r, GLint nknots, INREAL knot[], GLint stride, 177 INREAL ctlarray[], GLint order, GLenum type)177 INREAL ctlarray[], GLint order, GLenum type) 178 178 { 179 179 #ifdef DOWN_LOAD_NURBS … … 185 185 switch(type) { 186 186 case GLU_MAP1_TRIM_2: 187 realType = N_P2D;188 break;187 realType = N_P2D; 188 break; 189 189 case GLU_MAP1_TRIM_3: 190 realType = N_P2DR;191 break;190 realType = N_P2DR; 191 break; 192 192 default: 193 realType = type;194 break;193 realType = type; 194 break; 195 195 } 196 196 197 197 r->nurbscurve(nknots, knot, sizeof(INREAL) * stride, ctlarray, order, 198 realType);198 realType); 199 199 } 200 200 201 201 void GLAPI 202 202 gluNurbsSurface(GLUnurbs *r, GLint sknot_count, GLfloat *sknot, 203 GLint tknot_count, GLfloat *tknot,204 GLint s_stride, GLint t_stride,205 GLfloat *ctlarray, GLint sorder, GLint torder,206 GLenum type)203 GLint tknot_count, GLfloat *tknot, 204 GLint s_stride, GLint t_stride, 205 GLfloat *ctlarray, GLint sorder, GLint torder, 206 GLenum type) 207 207 { 208 208 #ifdef DOWN_LOAD_NURBS … … 221 221 } 222 222 tempNurb = nurbSurfMake(sknot_count, sknot, 223 tknot_count, tknot,224 sorder, torder,225 dimension,226 ctlarray,227 s_stride, t_stride);228 223 tknot_count, tknot, 224 sorder, torder, 225 dimension, 226 ctlarray, 227 s_stride, t_stride); 228 229 229 } 230 230 #endif 231 231 232 232 r->nurbssurface(sknot_count, sknot, tknot_count, tknot, 233 sizeof(INREAL) * s_stride, sizeof(INREAL) * t_stride,234 ctlarray, sorder, torder, type);233 sizeof(INREAL) * s_stride, sizeof(INREAL) * t_stride, 234 ctlarray, sorder, torder, type); 235 235 } 236 236 237 237 void GLAPI 238 238 gluLoadSamplingMatrices(GLUnurbs *r, const GLfloat modelMatrix[16], 239 const GLfloat projMatrix[16],240 const GLint viewport[4])239 const GLfloat projMatrix[16], 240 const GLint viewport[4]) 241 241 { 242 242 r->useGLMatrices(modelMatrix, projMatrix, viewport); … … 251 251 case GLU_AUTO_LOAD_MATRIX: 252 252 r->setautoloadmode(value); 253 return;253 return; 254 254 255 255 case GLU_CULLING: 256 if (value != 0.0) {257 nurbsValue = N_CULLINGON;258 } else {259 nurbsValue = N_NOCULLING;260 }261 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, nurbsValue);262 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_CULLING, nurbsValue);263 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_CULLING, nurbsValue);264 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_CULLING, nurbsValue);256 if (value != 0.0) { 257 nurbsValue = N_CULLINGON; 258 } else { 259 nurbsValue = N_NOCULLING; 260 } 261 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, nurbsValue); 262 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_CULLING, nurbsValue); 263 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_CULLING, nurbsValue); 264 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_CULLING, nurbsValue); 265 265 return; 266 266 267 267 case GLU_SAMPLING_METHOD: 268 if (value == GLU_PATH_LENGTH) {269 nurbsValue = N_PATHLENGTH;270 } else if (value == GLU_PARAMETRIC_ERROR) {271 nurbsValue = N_PARAMETRICDISTANCE;272 } else if (value == GLU_DOMAIN_DISTANCE) {273 nurbsValue = N_DOMAINDISTANCE;268 if (value == GLU_PATH_LENGTH) { 269 nurbsValue = N_PATHLENGTH; 270 } else if (value == GLU_PARAMETRIC_ERROR) { 271 nurbsValue = N_PARAMETRICDISTANCE; 272 } else if (value == GLU_DOMAIN_DISTANCE) { 273 nurbsValue = N_DOMAINDISTANCE; 274 274 r->set_is_domain_distance_sampling(1); //optimzing untrimmed case 275 275 276 } else if (value == GLU_OBJECT_PARAMETRIC_ERROR) {277 nurbsValue = N_OBJECTSPACE_PARA;278 r->setautoloadmode( 0.0 );279 r->setSamplingMatrixIdentity();280 } else if (value == GLU_OBJECT_PATH_LENGTH) {281 nurbsValue = N_OBJECTSPACE_PATH;282 r->setautoloadmode( 0.0 );283 r->setSamplingMatrixIdentity();284 } else {276 } else if (value == GLU_OBJECT_PARAMETRIC_ERROR) { 277 nurbsValue = N_OBJECTSPACE_PARA; 278 r->setautoloadmode( 0.0 ); 279 r->setSamplingMatrixIdentity(); 280 } else if (value == GLU_OBJECT_PATH_LENGTH) { 281 nurbsValue = N_OBJECTSPACE_PATH; 282 r->setautoloadmode( 0.0 ); 283 r->setSamplingMatrixIdentity(); 284 } else { 285 285 r->postError(GLU_INVALID_VALUE); 286 286 return; 287 287 } 288 288 289 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue);290 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue);291 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue);292 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue);293 return;289 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue); 290 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue); 291 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_SAMPLINGMETHOD, nurbsValue); 292 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_SAMPLINGMETHOD, nurbsValue); 293 return; 294 294 295 295 case GLU_SAMPLING_TOLERANCE: 296 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value);297 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_PIXEL_TOLERANCE, value);298 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_PIXEL_TOLERANCE, value);299 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_PIXEL_TOLERANCE, value);300 return;296 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value); 297 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_PIXEL_TOLERANCE, value); 298 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_PIXEL_TOLERANCE, value); 299 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_PIXEL_TOLERANCE, value); 300 return; 301 301 302 302 case GLU_PARAMETRIC_TOLERANCE: 303 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value);303 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value); 304 304 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_ERROR_TOLERANCE, value); 305 305 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_ERROR_TOLERANCE, value); 306 306 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_ERROR_TOLERANCE, value); 307 307 return; 308 308 309 309 310 310 case GLU_DISPLAY_MODE: 311 312 if (value == GLU_FILL) {313 nurbsValue = N_FILL;314 } else if (value == GLU_OUTLINE_POLYGON) {315 nurbsValue = N_OUTLINE_POLY;316 } else if (value == GLU_OUTLINE_PATCH) {317 nurbsValue = N_OUTLINE_PATCH;318 } else {319 r->postError(GLU_INVALID_VALUE);320 return;321 }322 r->setnurbsproperty(N_DISPLAY, nurbsValue);323 324 break;311 312 if (value == GLU_FILL) { 313 nurbsValue = N_FILL; 314 } else if (value == GLU_OUTLINE_POLYGON) { 315 nurbsValue = N_OUTLINE_POLY; 316 } else if (value == GLU_OUTLINE_PATCH) { 317 nurbsValue = N_OUTLINE_PATCH; 318 } else { 319 r->postError(GLU_INVALID_VALUE); 320 return; 321 } 322 r->setnurbsproperty(N_DISPLAY, nurbsValue); 323 324 break; 325 325 326 326 case GLU_U_STEP: 327 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_S_STEPS, value);328 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_S_STEPS, value);329 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value);330 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_S_STEPS, value);331 332 //added for optimizing untrimmed case327 r->setnurbsproperty(GL_MAP1_VERTEX_3, N_S_STEPS, value); 328 r->setnurbsproperty(GL_MAP1_VERTEX_4, N_S_STEPS, value); 329 r->setnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value); 330 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_S_STEPS, value); 331 332 //added for optimizing untrimmed case 333 333 r->set_domain_distance_u_rate(value); 334 break;334 break; 335 335 336 336 case GLU_V_STEP: … … 340 340 r->setnurbsproperty(GL_MAP2_VERTEX_4, N_T_STEPS, value); 341 341 342 //added for optimizing untrimmed case342 //added for optimizing untrimmed case 343 343 r->set_domain_distance_v_rate(value); 344 break;345 344 break; 345 346 346 case GLU_NURBS_MODE: 347 if(value == GLU_NURBS_RENDERER)348 r->put_callbackFlag(0);349 else if(value == GLU_NURBS_TESSELLATOR)350 r->put_callbackFlag(1);351 else352 r->postError(GLU_INVALID_ENUM);353 break;347 if(value == GLU_NURBS_RENDERER) 348 r->put_callbackFlag(0); 349 else if(value == GLU_NURBS_TESSELLATOR) 350 r->put_callbackFlag(1); 351 else 352 r->postError(GLU_INVALID_ENUM); 353 break; 354 354 355 355 default: 356 r->postError(GLU_INVALID_ENUM);357 return; 356 r->postError(GLU_INVALID_ENUM); 357 return; 358 358 } 359 359 } … … 366 366 switch(property) { 367 367 case GLU_AUTO_LOAD_MATRIX: 368 if (r->getautoloadmode()) {369 *value = GL_TRUE;370 } else {371 *value = GL_FALSE;372 }373 break;368 if (r->getautoloadmode()) { 369 *value = GL_TRUE; 370 } else { 371 *value = GL_FALSE; 372 } 373 break; 374 374 case GLU_CULLING: 375 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, &nurbsValue);376 if (nurbsValue == N_CULLINGON) {377 *value = GL_TRUE;378 } else {379 *value = GL_FALSE;380 }381 break;375 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_CULLING, &nurbsValue); 376 if (nurbsValue == N_CULLINGON) { 377 *value = GL_TRUE; 378 } else { 379 *value = GL_FALSE; 380 } 381 break; 382 382 case GLU_SAMPLING_METHOD: 383 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, value);384 if(*value == N_PATHLENGTH)385 *value = GLU_PATH_LENGTH;386 else if(*value == N_PARAMETRICDISTANCE)387 *value = GLU_PARAMETRIC_ERROR;388 else if(*value == N_DOMAINDISTANCE)389 *value = GLU_DOMAIN_DISTANCE;390 else if(*value == N_OBJECTSPACE_PATH)391 *value = GLU_OBJECT_PATH_LENGTH;392 else if(*value == N_OBJECTSPACE_PARA)393 *value = GLU_OBJECT_PARAMETRIC_ERROR; 394 break;383 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_SAMPLINGMETHOD, value); 384 if(*value == N_PATHLENGTH) 385 *value = GLU_PATH_LENGTH; 386 else if(*value == N_PARAMETRICDISTANCE) 387 *value = GLU_PARAMETRIC_ERROR; 388 else if(*value == N_DOMAINDISTANCE) 389 *value = GLU_DOMAIN_DISTANCE; 390 else if(*value == N_OBJECTSPACE_PATH) 391 *value = GLU_OBJECT_PATH_LENGTH; 392 else if(*value == N_OBJECTSPACE_PARA) 393 *value = GLU_OBJECT_PARAMETRIC_ERROR; 394 break; 395 395 case GLU_SAMPLING_TOLERANCE: 396 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value);397 break;396 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_PIXEL_TOLERANCE, value); 397 break; 398 398 case GLU_PARAMETRIC_TOLERANCE: 399 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value);399 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_ERROR_TOLERANCE, value); 400 400 break; 401 401 402 402 case GLU_U_STEP: 403 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value);404 break;403 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_S_STEPS, value); 404 break; 405 405 case GLU_V_STEP: 406 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_T_STEPS, value);407 break;406 r->getnurbsproperty(GL_MAP2_VERTEX_3, N_T_STEPS, value); 407 break; 408 408 case GLU_DISPLAY_MODE: 409 r->getnurbsproperty(N_DISPLAY, &nurbsValue);410 if (nurbsValue == N_FILL) {411 *value = GLU_FILL;412 } else if (nurbsValue == N_OUTLINE_POLY) {413 *value = GLU_OUTLINE_POLYGON;414 } else {415 *value = GLU_OUTLINE_PATCH;416 }417 break;409 r->getnurbsproperty(N_DISPLAY, &nurbsValue); 410 if (nurbsValue == N_FILL) { 411 *value = GLU_FILL; 412 } else if (nurbsValue == N_OUTLINE_POLY) { 413 *value = GLU_OUTLINE_POLYGON; 414 } else { 415 *value = GLU_OUTLINE_PATCH; 416 } 417 break; 418 418 419 419 case GLU_NURBS_MODE: 420 if(r->is_callback())421 *value = GLU_NURBS_TESSELLATOR;422 else423 *value = GLU_NURBS_RENDERER;424 break;425 420 if(r->is_callback()) 421 *value = GLU_NURBS_TESSELLATOR; 422 else 423 *value = GLU_NURBS_RENDERER; 424 break; 425 426 426 default: 427 r->postError(GLU_INVALID_ENUM);428 return;427 r->postError(GLU_INVALID_ENUM); 428 return; 429 429 } 430 430 } … … 446 446 case GLU_NURBS_TEXTURE_COORD_DATA: 447 447 case GLU_NURBS_COLOR_DATA: 448 nobj->putSurfCallBack(which, (GLvoid (* )(...))fn);448 nobj->putSurfCallBack(which, (GLvoid (* GLCALLBACK)(...))fn); 449 449 break; 450 450 451 451 case GLU_NURBS_ERROR: 452 nobj->errorCallback = (void (* )( GLenum )) fn;452 nobj->errorCallback = (void (* GLCALLBACK)( GLenum )) fn; 453 453 break; 454 454 default: -
trunk/src/opengl/glu/nurbs/interface/glrenderer.h
r2689 r3079 1 /* $Id: glrenderer.h,v 1. 1 2000-02-09 08:49:01jeroen Exp $ */1 /* $Id: glrenderer.h,v 1.2 2000-03-11 09:05:02 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 * glrenderer.h 38 38 * 39 * $Date: 2000-0 2-09 08:49:01 $ $Revision: 1.1$40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glrenderer.h,v 1. 1 2000-02-09 08:49:01jeroen Exp $39 * $Date: 2000-03-11 09:05:02 $ $Revision: 1.2 $ 40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glrenderer.h,v 1.2 2000-03-11 09:05:02 jeroen Exp $ 41 41 */ 42 42 … … 56 56 void loadGLMatrices( void ); 57 57 void useGLMatrices( const GLfloat modelMatrix[16], 58 const GLfloat projMatrix[16],59 const GLint viewport[4] );60 void setSamplingMatrixIdentity( void );58 const GLfloat projMatrix[16], 59 const GLint viewport[4] ); 60 void setSamplingMatrixIdentity( void ); 61 61 62 void errorHandler( int ); 63 void bgnrender( void ); 64 void endrender( void ); 65 void setautoloadmode( INREAL value ) 66 { 67 68 if (value) autoloadmode = GL_TRUE; 69 else autoloadmode = GL_FALSE; 70 71 } 72 GLboolean getautoloadmode( void ) { return autoloadmode; } 62 void errorHandler( int ); 63 void bgnrender( void ); 64 void endrender( void ); 65 void setautoloadmode( INREAL value ) 66 { 73 67 74 void (GLAPI *errorCallback)( GLenum ); 75 void postError( int which ) 76 { if (errorCallback) (*errorCallback)( (GLenum)which ); } 68 if (value) autoloadmode = GL_TRUE; 69 else autoloadmode = GL_FALSE; 77 70 78 void putSurfCallBack(GLenum which, GLvoid (GLAPI *fn)(...)) 71 } 72 GLboolean getautoloadmode( void ) { return autoloadmode; } 73 74 void (GLCALLBACK *errorCallback)( GLenum ); 75 void postError( int which ) 76 { if (errorCallback) (*errorCallback)( (GLenum)which ); } 77 78 void putSurfCallBack(GLenum which, GLvoid (GLCALLBACK *fn)(...)) 79 79 { 80 curveEvaluator.putCallBack(which, fn);81 surfaceEvaluator.putCallBack(which, fn);80 curveEvaluator.putCallBack(which, fn); 81 surfaceEvaluator.putCallBack(which, fn); 82 82 } 83 83 84 84 int get_vertices_call_back() 85 85 { 86 return surfaceEvaluator.get_vertices_call_back();86 return surfaceEvaluator.get_vertices_call_back(); 87 87 } 88 88 89 89 void put_vertices_call_back(int flag) 90 90 { 91 surfaceEvaluator.put_vertices_call_back(flag);91 surfaceEvaluator.put_vertices_call_back(flag); 92 92 } 93 93 … … 112 112 void LOD_eval_list(int level) 113 113 { 114 surfaceEvaluator.LOD_eval_list(level);114 surfaceEvaluator.LOD_eval_list(level); 115 115 } 116 116 … … 118 118 int is_callback() 119 119 { 120 return callbackFlag;120 return callbackFlag; 121 121 } 122 122 void put_callbackFlag(int flag) 123 123 { 124 callbackFlag = flag;125 surfaceEvaluator.put_vertices_call_back(flag);126 curveEvaluator.put_vertices_call_back(flag);124 callbackFlag = flag; 125 surfaceEvaluator.put_vertices_call_back(flag); 126 curveEvaluator.put_vertices_call_back(flag); 127 127 } 128 128 129 129 private: 130 GLboolean autoloadmode;131 OpenGLSurfaceEvaluator surfaceEvaluator;132 OpenGLCurveEvaluator curveEvaluator;130 GLboolean autoloadmode; 131 OpenGLSurfaceEvaluator surfaceEvaluator; 132 OpenGLCurveEvaluator curveEvaluator; 133 133 134 void loadSamplingMatrix( const GLfloat vmat[4][4],135 const GLint viewport[4] );136 void loadCullingMatrix( GLfloat vmat[4][4] );137 static void grabGLMatrix( GLfloat vmat[4][4] );138 static void transform4d( GLfloat A[4], GLfloat B[4],139 GLfloat mat[4][4] );140 static void multmatrix4d( GLfloat n[4][4], GLfloat left[4][4],141 GLfloat right[4][4] );134 void loadSamplingMatrix( const GLfloat vmat[4][4], 135 const GLint viewport[4] ); 136 void loadCullingMatrix( GLfloat vmat[4][4] ); 137 static void grabGLMatrix( GLfloat vmat[4][4] ); 138 static void transform4d( GLfloat A[4], GLfloat B[4], 139 GLfloat mat[4][4] ); 140 static void multmatrix4d( GLfloat n[4][4], GLfloat left[4][4], 141 GLfloat right[4][4] ); 142 142 143 143 int callbackFlag; -
trunk/src/opengl/glu/nurbs/interface/glsurfeval.cpp
r2996 r3079 1 /* $Id: glsurfeval.cpp,v 1. 2 2000-03-04 19:10:13jeroen Exp $ */1 /* $Id: glsurfeval.cpp,v 1.3 2000-03-11 09:05:02 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 * glsurfeval.c++ 38 38 * 39 * $Date: 2000-03- 04 19:10:13 $ $Revision: 1.2$40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glsurfeval.cpp,v 1. 2 2000-03-04 19:10:13jeroen Exp $39 * $Date: 2000-03-11 09:05:02 $ $Revision: 1.3 $ 40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glsurfeval.cpp,v 1.3 2000-03-11 09:05:02 jeroen Exp $ 41 41 */ 42 42 … … 52 52 #include "bezierPatchMesh.h" 53 53 54 55 54 //extern int surfcount; 56 55 //int surfcount=0; 57 56 58 /*#define USE_INTERNAL_EVAL*/ //use internal evaluator 57 #define USE_INTERNAL_EVAL /* use internal evaluator*/ 59 58 60 59 /*whether do evaluation or not*/ … … 1126 1125 glEvalCoord2f((GLfloat) u, (GLfloat) v); 1127 1126 1128 1129 1127 #endif 1130 1128 … … 1192 1190 1193 1191 void 1194 OpenGLSurfaceEvaluator::putCallBack(GLenum which, GLvoid (GL API*fn)(...))1192 OpenGLSurfaceEvaluator::putCallBack(GLenum which, GLvoid (GLCALLBACK *fn)(...)) 1195 1193 { 1196 1194 switch(which) 1197 1195 { 1198 1196 case GLU_NURBS_BEGIN: 1199 beginCallBackN = (void (GL API*) (GLenum)) fn;1197 beginCallBackN = (void (GLCALLBACK *) (GLenum)) fn; 1200 1198 break; 1201 1199 case GLU_NURBS_END: 1202 endCallBackN = (void (GL API*) (void)) fn;1200 endCallBackN = (void (GLCALLBACK *) (void)) fn; 1203 1201 break; 1204 1202 case GLU_NURBS_VERTEX: 1205 vertexCallBackN = (void (GL API*) (const GLfloat*)) fn;1203 vertexCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 1206 1204 break; 1207 1205 case GLU_NURBS_NORMAL: 1208 normalCallBackN = (void (GL API*) (const GLfloat*)) fn;1206 normalCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 1209 1207 break; 1210 1208 case GLU_NURBS_COLOR: 1211 colorCallBackN = (void (GL API*) (const GLfloat*)) fn;1209 colorCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 1212 1210 break; 1213 1211 case GLU_NURBS_TEXTURE_COORD: 1214 texcoordCallBackN = (void (GL API*) (const GLfloat*)) fn;1212 texcoordCallBackN = (void (GLCALLBACK *) (const GLfloat*)) fn; 1215 1213 break; 1216 1214 case GLU_NURBS_BEGIN_DATA: 1217 beginCallBackData = (void (GL API*) (GLenum, void*)) fn;1215 beginCallBackData = (void (GLCALLBACK *) (GLenum, void*)) fn; 1218 1216 break; 1219 1217 case GLU_NURBS_END_DATA: 1220 endCallBackData = (void (GL API*) (void*)) fn;1218 endCallBackData = (void (GLCALLBACK *) (void*)) fn; 1221 1219 break; 1222 1220 case GLU_NURBS_VERTEX_DATA: 1223 vertexCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;1221 vertexCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 1224 1222 break; 1225 1223 case GLU_NURBS_NORMAL_DATA: 1226 normalCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;1224 normalCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 1227 1225 break; 1228 1226 case GLU_NURBS_COLOR_DATA: 1229 colorCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;1227 colorCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 1230 1228 break; 1231 1229 case GLU_NURBS_TEXTURE_COORD_DATA: 1232 texcoordCallBackData = (void (GL API*) (const GLfloat*, void*)) fn;1230 texcoordCallBackData = (void (GLCALLBACK *) (const GLfloat*, void*)) fn; 1233 1231 break; 1234 1232 -
trunk/src/opengl/glu/nurbs/interface/glsurfeval.h
r2689 r3079 1 /* $Id: glsurfeval.h,v 1. 1 2000-02-09 08:49:02jeroen Exp $ */1 /* $Id: glsurfeval.h,v 1.2 2000-03-11 09:05:03 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 37 37 * glsurfeval.h 38 38 * 39 * $Date: 2000-0 2-09 08:49:02 $ $Revision: 1.1$40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glsurfeval.h,v 1. 1 2000-02-09 08:49:02jeroen Exp $39 * $Date: 2000-03-11 09:05:03 $ $Revision: 1.2 $ 40 * $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/glsurfeval.h,v 1.2 2000-03-11 09:05:03 jeroen Exp $ 41 41 */ 42 42 … … 62 62 #define IN_MAX_BEZIER_ORDER 40 /*XXX should be bigger than machine order*/ 63 63 #endif 64 64 65 65 #ifndef IN_MAX_DIMENSION 66 66 #define IN_MAX_DIMENSION 4 … … 90 90 class StoredVertex { 91 91 public: 92 StoredVertex() { type = 0; }93 ~StoredVertex(void) {}94 void saveEvalCoord(REAL x, REAL y)95 {coord[0] = x; coord[1] = y; type = TYPECOORD; }96 void saveEvalPoint(long x, long y)97 {point[0] = x; point[1] = y; type = TYPEPOINT; }98 void invoke(OpenGLSurfaceEvaluator *eval);92 StoredVertex() { type = 0; } 93 ~StoredVertex(void) {} 94 void saveEvalCoord(REAL x, REAL y) 95 {coord[0] = x; coord[1] = y; type = TYPECOORD; } 96 void saveEvalPoint(long x, long y) 97 {point[0] = x; point[1] = y; type = TYPEPOINT; } 98 void invoke(OpenGLSurfaceEvaluator *eval); 99 99 100 100 private: 101 int type;102 REAL coord[2];103 long point[2];101 int type; 102 REAL coord[2]; 103 long point[2]; 104 104 }; 105 105 106 106 class OpenGLSurfaceEvaluator : public BasicSurfaceEvaluator { 107 107 public: 108 OpenGLSurfaceEvaluator();109 ~OpenGLSurfaceEvaluator( void );110 void polymode( long style );111 void range2f( long, REAL *, REAL * );112 void domain2f( REAL, REAL, REAL, REAL );113 void addMap( SurfaceMap * ) { }114 115 void enable( long );116 void disable( long );117 void bgnmap2f( long );118 void map2f( long, REAL, REAL, long, long,119 REAL, REAL, long, long, REAL * );120 void mapgrid2f( long, REAL, REAL, long, REAL, REAL );121 void mapmesh2f( long, long, long, long, long );122 void evalcoord2f( long, REAL, REAL );123 void evalpoint2i( long, long );124 void endmap2f( void );125 126 void bgnline( void );127 void endline( void );128 void bgnclosedline( void );129 void endclosedline( void );130 void bgntmesh( void );131 void swaptmesh( void );132 void endtmesh( void );133 void bgnqstrip( void );134 void endqstrip( void );108 OpenGLSurfaceEvaluator(); 109 ~OpenGLSurfaceEvaluator( void ); 110 void polymode( long style ); 111 void range2f( long, REAL *, REAL * ); 112 void domain2f( REAL, REAL, REAL, REAL ); 113 void addMap( SurfaceMap * ) { } 114 115 void enable( long ); 116 void disable( long ); 117 void bgnmap2f( long ); 118 void map2f( long, REAL, REAL, long, long, 119 REAL, REAL, long, long, REAL * ); 120 void mapgrid2f( long, REAL, REAL, long, REAL, REAL ); 121 void mapmesh2f( long, long, long, long, long ); 122 void evalcoord2f( long, REAL, REAL ); 123 void evalpoint2i( long, long ); 124 void endmap2f( void ); 125 126 void bgnline( void ); 127 void endline( void ); 128 void bgnclosedline( void ); 129 void endclosedline( void ); 130 void bgntmesh( void ); 131 void swaptmesh( void ); 132 void endtmesh( void ); 133 void bgnqstrip( void ); 134 void endqstrip( void ); 135 135 136 136 void bgntfan( void ); … … 141 141 int n_right, REAL u_right, REAL* right_val); 142 142 143 void coord2f( REAL, REAL );144 void point2i( long, long );145 146 void newtmeshvert( REAL, REAL );147 void newtmeshvert( long, long );148 149 void putCallBack(GLenum which, GLvoid (GLAPI*fn)(...));143 void coord2f( REAL, REAL ); 144 void point2i( long, long ); 145 146 void newtmeshvert( REAL, REAL ); 147 void newtmeshvert( long, long ); 148 149 void putCallBack(GLenum which, GLvoid (GLCALLBACK *fn)(...)); 150 150 int get_vertices_call_back() 151 151 { 152 return output_triangles;152 return output_triangles; 153 153 } 154 154 void put_vertices_call_back(int flag) 155 155 { 156 output_triangles = flag;156 output_triangles = flag; 157 157 } 158 158 … … 179 179 180 180 private: 181 StoredVertex *vertexCache[VERTEX_CACHE_SIZE];182 int tmeshing;183 int which;184 int vcount;181 StoredVertex *vertexCache[VERTEX_CACHE_SIZE]; 182 int tmeshing; 183 int which; 184 int vcount; 185 185 186 186 GLint gl_polygon_mode[2];/*to save and restore so that 187 *no side effect188 */187 *no side effect 188 */ 189 189 bezierPatchMesh *global_bpm; //for output triangles 190 190 int output_triangles; //true 1 or false 0 … … 192 192 193 193 194 void (GL API*beginCallBackN) (GLenum type);195 void (GL API*endCallBackN) (void);196 void (GL API*vertexCallBackN) (const GLfloat *vert);197 void (GL API*normalCallBackN) (const GLfloat *normal);198 void (GL API*colorCallBackN) (const GLfloat *color);199 void (GL API*texcoordCallBackN) (const GLfloat *texcoord);200 201 void (GL API*beginCallBackData) (GLenum type, void* data);202 void (GL API*endCallBackData) (void* data);203 void (GL API*vertexCallBackData) (const GLfloat *vert, void* data);204 void (GL API*normalCallBackData) (const GLfloat *normal, void* data);205 void (GL API*colorCallBackData) (const GLfloat *color, void* data);206 void (GL API*texcoordCallBackData) (const GLfloat *texcoord, void* data);207 208 void beginCallBack (GLenum type, void* data);209 void endCallBack (void* data);210 void vertexCallBack (const GLfloat *vert, void* data);211 void normalCallBack (const GLfloat *normal, void* data);212 void colorCallBack (const GLfloat *color, void* data);213 void texcoordCallBack (const GLfloat *texcoord, void* data);214 215 216 void* userData; //the opaque pointer for Data callback functions.194 void (GLCALLBACK *beginCallBackN) (GLenum type); 195 void (GLCALLBACK *endCallBackN) (void); 196 void (GLCALLBACK *vertexCallBackN) (const GLfloat *vert); 197 void (GLCALLBACK *normalCallBackN) (const GLfloat *normal); 198 void (GLCALLBACK *colorCallBackN) (const GLfloat *color); 199 void (GLCALLBACK *texcoordCallBackN) (const GLfloat *texcoord); 200 201 void (GLCALLBACK *beginCallBackData) (GLenum type, void* data); 202 void (GLCALLBACK *endCallBackData) (void* data); 203 void (GLCALLBACK *vertexCallBackData) (const GLfloat *vert, void* data); 204 void (GLCALLBACK *normalCallBackData) (const GLfloat *normal, void* data); 205 void (GLCALLBACK *colorCallBackData) (const GLfloat *color, void* data); 206 void (GLCALLBACK *texcoordCallBackData) (const GLfloat *texcoord, void* data); 207 208 void beginCallBack (GLenum type, void* data); 209 void endCallBack (void* data); 210 void vertexCallBack (const GLfloat *vert, void* data); 211 void normalCallBack (const GLfloat *normal, void* data); 212 void colorCallBack (const GLfloat *color, void* data); 213 void texcoordCallBack (const GLfloat *texcoord, void* data); 214 215 216 void* userData; /* the opaque pointer for Data callback functions.*/ 217 217 218 218 /*LOD evaluation*/ 219 219 void LOD_triangle(REAL A[2], REAL B[2], REAL C[2], 220 int level);220 int level); 221 221 void LOD_eval(int num_vert, REAL* verts, int type, int level); 222 223 int LOD_eval_level; //set by LOD_eval_list()222 223 int LOD_eval_level; /* set by LOD_eval_list() */ 224 224 225 225 /*************begin for internal evaluators*****************/ 226 226 227 227 /*the following global variables are only defined in this file. 228 228 *They are used to cache the precomputed Bezier polynomial values. … … 272 272 /*functions*/ 273 273 void inDoDomain2WithDerivs(int k, REAL u, REAL v, 274 REAL u1, REAL u2, int uorder,275 REAL v1, REAL v2, int vorder,276 REAL *baseData,277 REAL *retPoint, REAL *retdu, REAL *retdv);274 REAL u1, REAL u2, int uorder, 275 REAL v1, REAL v2, int vorder, 276 REAL *baseData, 277 REAL *retPoint, REAL *retdu, REAL *retdv); 278 278 void inPreEvaluate(int order, REAL vprime, REAL *coeff); 279 279 void inPreEvaluateWithDeriv(int order, REAL vprime, REAL *coeff, REAL *coeffDeriv); … … 281 281 void inComputeNormal2(REAL *pu, REAL *pv, REAL *n); 282 282 void inDoEvalCoord2(REAL u, REAL v, 283 REAL *retPoint, REAL *retNormal);283 REAL *retPoint, REAL *retNormal); 284 284 void inDoEvalCoord2NOGE(REAL u, REAL v, 285 REAL *retPoint, REAL *retNormal);285 REAL *retPoint, REAL *retNormal); 286 286 void inMap2f(int k, 287 REAL ulower,288 REAL uupper,289 int ustride,290 int uorder,291 REAL vlower,292 REAL vupper,293 int vstride,294 int vorder,295 REAL *ctlPoints);287 REAL ulower, 288 REAL uupper, 289 int ustride, 290 int uorder, 291 REAL vlower, 292 REAL vupper, 293 int vstride, 294 int vorder, 295 REAL *ctlPoints); 296 296 297 297 void inMapGrid2f(int nu, REAL u0, REAL u1, 298 int nv, REAL v0, REAL v1);298 int nv, REAL v0, REAL v1); 299 299 300 300 void inEvalMesh2(int lowU, int lowV, int highU, int highV); … … 303 303 304 304 void inEvalULine(int n_points, REAL v, REAL* u_vals, 305 int stride, REAL ret_points[][3], REAL ret_normals[][3]);305 int stride, REAL ret_points[][3], REAL ret_normals[][3]); 306 306 307 307 void inEvalVLine(int n_points, REAL u, REAL* v_vals, 308 int stride, REAL ret_points[][3], REAL ret_normals[][3]);308 int stride, REAL ret_points[][3], REAL ret_normals[][3]); 309 309 310 310 void inEvalUStrip(int n_upper, REAL v_upper, REAL* upper_val, … … 326 326 327 327 void inDoDomain2WithDerivsBV(int k, REAL u, REAL v, 328 REAL u1, REAL u2, int uorder,329 REAL v1, REAL v2, int vorder,330 REAL *baseData,331 REAL *retPoint, REAL* retdu, REAL *retdv);328 REAL u1, REAL u2, int uorder, 329 REAL v1, REAL v2, int vorder, 330 REAL *baseData, 331 REAL *retPoint, REAL* retdu, REAL *retdv); 332 332 333 333 void inDoDomain2WithDerivsBU(int k, REAL u, REAL v, 334 REAL u1, REAL u2, int uorder,335 REAL v1, REAL v2, int vorder,336 REAL *baseData,337 REAL *retPoint, REAL* retdu, REAL *retdv);334 REAL u1, REAL u2, int uorder, 335 REAL v1, REAL v2, int vorder, 336 REAL *baseData, 337 REAL *retPoint, REAL* retdu, REAL *retdv); 338 338 339 339 340 340 void inDoEvalCoord2NOGE_BV(REAL u, REAL v, 341 REAL *retPoint, REAL *retNormal);341 REAL *retPoint, REAL *retNormal); 342 342 343 343 void inDoEvalCoord2NOGE_BU(REAL u, REAL v, 344 REAL *retPoint, REAL *retNormal);344 REAL *retPoint, REAL *retNormal); 345 345 346 346 void inBPMEval(bezierPatchMesh* bpm); … … 362 362 363 363 void inMap2fEM(int which, //0:vert,1:norm,2:color,3:tex 364 int dimension,365 REAL ulower,366 REAL uupper,367 int ustride,368 int uorder,369 REAL vlower,370 REAL vupper,371 int vstride,372 int vorder,373 REAL *ctlPoints);364 int dimension, 365 REAL ulower, 366 REAL uupper, 367 int ustride, 368 int uorder, 369 REAL vlower, 370 REAL vupper, 371 int vstride, 372 int vorder, 373 REAL *ctlPoints); 374 374 375 375 void inDoDomain2WithDerivsEM(surfEvalMachine *em, REAL u, REAL v, 376 REAL *retPoint, REAL *retdu, REAL *retdv);376 REAL *retPoint, REAL *retdu, REAL *retdv); 377 377 void inDoDomain2EM(surfEvalMachine *em, REAL u, REAL v, 378 REAL *retPoint);378 REAL *retPoint); 379 379 void inDoEvalCoord2EM(REAL u, REAL v); 380 380 … … 386 386 387 387 /*************end for internal evaluators*****************/ 388 388 389 389 }; 390 390 … … 393 393 switch(type) { 394 394 case TYPECOORD: 395 eval->coord2f(coord[0], coord[1]);396 break;395 eval->coord2f(coord[0], coord[1]); 396 break; 397 397 case TYPEPOINT: 398 eval->point2i(point[0], point[1]);399 break;398 eval->point2i(point[0], point[1]); 399 break; 400 400 default: 401 break;401 break; 402 402 } 403 403 } -
trunk/src/opengl/glu/nurbs/interface/insurfeval.cpp
r2689 r3079 1 /* $Id: insurfeval.cpp,v 1. 1 2000-02-09 08:49:02jeroen Exp $ */1 /* $Id: insurfeval.cpp,v 1.2 2000-03-11 09:05:03 jeroen Exp $ */ 2 2 /* 3 3 ** License Applicability. Except to the extent portions of this file are … … 33 33 ** compliant with the OpenGL(R) version 1.2.1 Specification. 34 34 ** 35 ** $Date: 2000-0 2-09 08:49:02 $ $Revision: 1.1$35 ** $Date: 2000-03-11 09:05:03 $ $Revision: 1.2 $ 36 36 */ 37 37 /* 38 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/insurfeval.cpp,v 1. 1 2000-02-09 08:49:02jeroen Exp $38 ** $Header: /home/ktk/tmp/odin/2007/netlabs.cvs/odin32/src/opengl/glu/nurbs/interface/insurfeval.cpp,v 1.2 2000-03-11 09:05:03 jeroen Exp $ 39 39 */ 40 40 … … 66 66 67 67 static void LOD_interpolate(REAL A[2], REAL B[2], REAL C[2], int j, int k, int pow2_level, 68 REAL& u, REAL& v)68 REAL& u, REAL& v) 69 69 { 70 70 REAL a,a1,b,b1; … … 94 94 95 95 void OpenGLSurfaceEvaluator::LOD_triangle(REAL A[2], REAL B[2], REAL C[2], 96 int level)96 int level) 97 97 { 98 98 int k,j; … … 118 118 119 119 for(k=0; k<=j; k++) 120 {121 LOD_interpolate(A,B,C,j,j-k,pow2_level, u,v);120 { 121 LOD_interpolate(A,B,C,j,j-k,pow2_level, u,v); 122 122 #ifdef USE_LOD 123 123 LOD_EVAL_COORD(u,v); 124 // glEvalCoord2f(u,v);124 // glEvalCoord2f(u,v); 125 125 #else 126 inDoEvalCoord2EM(u,v);126 inDoEvalCoord2EM(u,v); 127 127 #endif 128 128 129 LOD_interpolate(A,B,C,j+1,j-k,pow2_level, u,v);129 LOD_interpolate(A,B,C,j+1,j-k,pow2_level, u,v); 130 130 131 131 #ifdef USE_LOD 132 LOD_EVAL_COORD(u,v);133 // glEvalCoord2f(u,v);132 LOD_EVAL_COORD(u,v); 133 // glEvalCoord2f(u,v); 134 134 #else 135 inDoEvalCoord2EM(u,v);135 inDoEvalCoord2EM(u,v); 136 136 #endif 137 }138 // endCallBack(); 137 } 138 // endCallBack(); 139 139 glEnd(); 140 140 } … … 142 142 143 143 void OpenGLSurfaceEvaluator::LOD_eval(int num_vert, REAL* verts, int type, 144 int level145 )144 int level 145 ) 146 146 { 147 147 int i,k; … … 151 151 for(i=2, k=4; i<=num_vert-2; i+=2, k+=4) 152 152 { 153 LOD_triangle(verts+k-4, verts+k-2, verts+k,154 level155 );156 LOD_triangle(verts+k-2, verts+k+2, verts+k,157 level158 );153 LOD_triangle(verts+k-4, verts+k-2, verts+k, 154 level 155 ); 156 LOD_triangle(verts+k-2, verts+k+2, verts+k, 157 level 158 ); 159 159 } 160 160 if(num_vert % 2 ==1) 161 161 { 162 LOD_triangle(verts+2*(num_vert-3), verts+2*(num_vert-2), verts+2*(num_vert-1),163 level164 );162 LOD_triangle(verts+2*(num_vert-3), verts+2*(num_vert-2), verts+2*(num_vert-1), 163 level 164 ); 165 165 } 166 166 break; … … 168 168 for(i=1, k=2; i<=num_vert-2; i++, k+=2) 169 169 { 170 LOD_triangle(verts,verts+k, verts+k+2,171 level172 );170 LOD_triangle(verts,verts+k, verts+k+2, 171 level 172 ); 173 173 } 174 174 break; … … 178 178 } 179 179 } 180 180 181 181 182 182 #endif //USE_LOD … … 256 256 int vstride = bpm->bpatch->dimension; 257 257 inMap2f( 258 (bpm->bpatch->dimension == 3)? GL_MAP2_VERTEX_3 : GL_MAP2_VERTEX_4,259 bpm->bpatch->umin,260 bpm->bpatch->umax,261 ustride,262 bpm->bpatch->uorder,263 bpm->bpatch->vmin,264 bpm->bpatch->vmax,265 vstride,266 bpm->bpatch->vorder,267 bpm->bpatch->ctlpoints);258 (bpm->bpatch->dimension == 3)? GL_MAP2_VERTEX_3 : GL_MAP2_VERTEX_4, 259 bpm->bpatch->umin, 260 bpm->bpatch->umax, 261 ustride, 262 bpm->bpatch->uorder, 263 bpm->bpatch->vmin, 264 bpm->bpatch->vmax, 265 vstride, 266 bpm->bpatch->vorder, 267 bpm->bpatch->ctlpoints); 268 268 269 269 bpm->vertex_array = (float*) malloc(sizeof(float)* (bpm->index_UVarray/2) * 3+1); /*in case the origional dimenion is 4, then we need 4 space to pass to evaluator.*/ … … 1339 1339 leftMostV[1] = v_lower; 1340 1340 1341 leftMostNormal = lowerNormal[j-1];1342 leftMostXYZ = lowerXYZ[j-1];1341 leftMostNormal = lowerNormal[j-1]; 1342 leftMostXYZ = lowerXYZ[j-1]; 1343 1343 } 1344 1344 } … … 1423 1423 { 1424 1424 bgntfan(); 1425 glNormal3fv(botMostNormal);1425 glNormal3fv(botMostNormal); 1426 1426 glVertex3fv(botMostXYZ); 1427 1427 1428 1428 while(j<n_right){ 1429 glNormal3fv(rightNormal[j]);1430 glVertex3fv(rightXYZ[j]);1431 j++;1429 glNormal3fv(rightNormal[j]); 1430 glVertex3fv(rightXYZ[j]); 1431 j++; 1432 1432 1433 1433 } … … 1441 1441 { 1442 1442 bgntfan(); 1443 glNormal3fv(botMostNormal);1444 glVertex3fv(botMostXYZ);1445 1443 glNormal3fv(botMostNormal); 1444 glVertex3fv(botMostXYZ); 1445 1446 1446 for(k=n_left-1; k>=i; k--) /*reverse order for two-side lighting*/ 1447 {1448 glNormal3fv(leftNormal[k]);1449 glVertex3fv(leftXYZ[k]);1450 }1447 { 1448 glNormal3fv(leftNormal[k]); 1449 glVertex3fv(leftXYZ[k]); 1450 } 1451 1451 1452 1452 endtfan(); … … 1458 1458 if(left_val[i] <= right_val[j]) 1459 1459 { 1460 bgntfan();1461 1462 glNormal3fv(rightNormal[j]);1463 glVertex3fv(rightXYZ[j]);1460 bgntfan(); 1461 1462 glNormal3fv(rightNormal[j]); 1463 glVertex3fv(rightXYZ[j]); 1464 1464 1465 1465 /*find the last k>=i such that … … 1480 1480 for(l=k; l>=i; l--)/*the reverse is for two-side lighting*/ 1481 1481 { 1482 glNormal3fv(leftNormal[l]);1483 glVertex3fv(leftXYZ[l]);1482 glNormal3fv(leftNormal[l]); 1483 glVertex3fv(leftXYZ[l]); 1484 1484 1485 1485 } 1486 glNormal3fv(botMostNormal);1487 glVertex3fv(botMostXYZ);1486 glNormal3fv(botMostNormal); 1487 glVertex3fv(botMostXYZ); 1488 1488 1489 1489 endtfan(); … … 1493 1493 i = k+1; 1494 1494 1495 botMostV[0] = u_left;1496 botMostV[1] = left_val[k];1497 botMostNormal = leftNormal[k];1498 botMostXYZ = leftXYZ[k];1495 botMostV[0] = u_left; 1496 botMostV[1] = left_val[k]; 1497 botMostNormal = leftNormal[k]; 1498 botMostXYZ = leftXYZ[k]; 1499 1499 } 1500 1500 else /*left_val[i] > right_val[j])*/ 1501 1501 { 1502 bgntfan();1503 glNormal3fv(leftNormal[i]);1504 glVertex3fv(leftXYZ[i]);1505 1502 bgntfan(); 1503 glNormal3fv(leftNormal[i]); 1504 glVertex3fv(leftXYZ[i]); 1505 1506 1506 glNormal3fv(botMostNormal); 1507 glVertex3fv(botMostXYZ);1508 1507 glVertex3fv(botMostXYZ); 1508 1509 1509 1510 1510 /*find the last k>=j such that … … 1516 1516 if(right_val[k] >= left_val[i]) 1517 1517 break; 1518 glNormal3fv(rightNormal[k]);1519 glVertex3fv(rightXYZ[k]);1518 glNormal3fv(rightNormal[k]); 1519 glVertex3fv(rightXYZ[k]); 1520 1520 1521 1521 k++; … … 1526 1526 */ 1527 1527 j=k; 1528 botMostV[0] = u_right;1529 botMostV[1] = right_val[j-1];1530 1531 botMostNormal = rightNormal[j-1];1532 botMostXYZ = rightXYZ[j-1];1528 botMostV[0] = u_right; 1529 botMostV[1] = right_val[j-1]; 1530 1531 botMostNormal = rightNormal[j-1]; 1532 botMostXYZ = rightXYZ[j-1]; 1533 1533 } 1534 1534 } … … 1536 1536 //clean up 1537 1537 free(leftXYZ); 1538 free( leftXYZ);1539 free( rightNormal);1538 free(rightXYZ); 1539 free(leftNormal); 1540 1540 free(rightNormal); 1541 1541 } … … 1543 1543 /*-----------------------begin evalMachine-------------------*/ 1544 1544 void OpenGLSurfaceEvaluator::inMap2fEM(int which, int k, 1545 REAL ulower,1546 REAL uupper,1547 int ustride,1548 int uorder,1549 REAL vlower,1550 REAL vupper,1551 int vstride,1552 int vorder,1553 REAL *ctlPoints)1545 REAL ulower, 1546 REAL uupper, 1547 int ustride, 1548 int uorder, 1549 REAL vlower, 1550 REAL vupper, 1551 int vstride, 1552 int vorder, 1553 REAL *ctlPoints) 1554 1554 { 1555 1555 int i,j,x; … … 2046 2046 #endif //GENERIC_TEST 2047 2047 2048 inDoEvalCoord2EM(u,v);2048 inDoEvalCoord2EM(u,v); 2049 2049 2050 2050 #endif //USE_LOD 2051 2051 2052 k += 2;2053 }2052 k += 2; 2053 } 2054 2054 endCallBack(userData); 2055 2055
Note:
See TracChangeset
for help on using the changeset viewer.
