- Timestamp:
- Mar 9, 2012, 10:12:14 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/VelocityArrowsSlice.cpp
r2822 r2831 3 3 4 4 #include <GL/glew.h> 5 #ifdef _WIN326 #include <windows.h>7 #endif8 5 #include <GL/gl.h> 9 #ifdef WIN3210 #include <GL/glaux.h>11 #else12 6 #ifdef HAVE_OPENCV_H 13 7 #include <opencv/cv.h> … … 16 10 #include <opencv/highgui.h> 17 11 #endif 18 #endif 12 13 #include <R2/R2FilePath.h> 19 14 20 15 #include "VelocityArrowsSlice.h" 21 22 #ifdef USE_NANOVIS_LIB23 16 #include "global.h" 24 #include "R2/R2FilePath.h"25 #endif26 27 #define USE_VERTEX_BUFFER28 17 29 18 VelocityArrowsSlice::VelocityArrowsSlice() … … 38 27 //_renderMode = GLYPHS; 39 28 _renderMode = LINES; 40 29 41 30 _tickCountForMinSizeAxis = 10; 42 31 43 32 _queryVelocityFP = 44 #ifdef USE_NANOVIS_LIB45 33 LoadCgSourceProgram(_context, "queryvelocity.cg", CG_PROFILE_FP30, "main"); 46 #else 47 cgCreateProgramFromFile(_context, CG_SOURCE, "queryvelocity.cg", 48 CG_PROFILE_FP30, "main", NULL); 49 cgGLLoadProgram(_queryVelocityFP); 50 #endif 34 51 35 _qvVectorFieldParam = cgGetNamedParameter(_queryVelocityFP, "vfield"); 52 36 … … 70 54 /* 71 55 _particleVP = 72 #ifdef USE_NANOVIS_LIB73 56 LoadCgSourceProgram(_context, "velocityslicevp.cg", CG_PROFILE_VP40, "vpmain"); 74 #else 75 cgCreateProgramFromFile(_context, CG_SOURCE, "velocityslicevp.cg", 76 CG_PROFILE_VP40, "vpmain", NULL); 77 cgGLLoadProgram(_particleVP); 78 #endif 57 79 58 _mvpParticleParam = cgGetNamedParameter(_particleVP, "mvp"); 80 59 _mvParticleParam = cgGetNamedParameter(_particleVP, "modelview"); … … 83 62 // TBD.. 84 63 _particleFP = 85 #ifdef USE_NANOVIS_LIB86 64 LoadCgSourceProgram(_context, "velocityslicefp.cg", CG_PROFILE_FP40, "fpmain"); 87 #else 88 cgCreateProgramFromFile(_context, CG_SOURCE, "velocityslicefp.cg", 89 CG_PROFILE_FP40, "fpmain", NULL); 90 cgGLLoadProgram(_particleFP); 91 #endif 65 92 66 _vectorParticleParam = cgGetNamedParameter(_particleVP, "vfield"); 93 67 */ 94 68 95 #ifdef USE_NANOVIS_LIB96 97 #ifdef WIN3298 AUX_RGBImageRec *pTextureImage = auxDIBImageLoad("arrows.bmp");99 _arrowsTex->setPixels(CF_RGB, DT_UBYTE, pTextureImage->sizeX, pTextureImage->sizeY, (void*) pTextureImage->data);100 101 _arrowsTex = new Texture2D(pTextureImage->sizeX, pTextureImage->sizeY, GL_FLOAT, GL_LINEAR, 3, (void*) pTextureImage->data);102 103 //delete pTextureImage;104 #else105 69 /* 106 70 TRACE("test1\n"); … … 115 79 if (pTextureImage) { 116 80 TRACE("file(%s) has been loaded\n", path); 117 _arrowsTex = new Texture2D(pTextureImage->width, pTextureImage->height, GL_FLOAT, GL_LINEAR, 3, (float*) pTextureImage->imageData); 81 _arrowsTex = new Texture2D(pTextureImage->width, pTextureImage->height, GL_FLOAT, GL_LINEAR, 3, pTextureImage->imageData); 82 //_arrowsTex->setWrapS(TW_MIRROR); 83 //_arrowsTex->setWrapT(TW_MIRROR); 118 84 TRACE("file(%s) has been loaded\n", path); 119 85 //cvReleaseImage(&pTextureImage); … … 124 90 */ 125 91 126 #endif127 128 #else129 _arrowsTex = new Texture2D();130 _arrowsTex->setWrapS(TW_MIRROR);131 _arrowsTex->setWrapT(TW_MIRROR);132 #ifdef WIN32133 AUX_RGBImageRec *pTextureImage = auxDIBImageLoad("arrows.bmp");134 _arrowsTex->setPixels(CF_RGB, DT_UBYTE, pTextureImage->sizeX, pTextureImage->sizeY, (void*) pTextureImage->data);135 136 //delete pTextureImage;137 #else138 IplImage* pTextureImage = cvLoadImage("arrows_flip2.png");139 _arrowsTex->setPixels(CF_RGB, DT_UBYTE, pTextureImage->width, pTextureImage->height, (void*) pTextureImage->imageData);140 141 //cvReleaseImage(&pTextureImage);142 #endif143 144 #endif145 92 _arrowColor.set(1, 1, 0); 146 93 … … 155 102 glDeleteFramebuffersEXT(1, &_fbo); 156 103 157 #ifdef USE_NANOVIS_LIB158 104 delete _arrowsTex; 159 #else 160 _arrowsTex->unref(); 161 #endif 105 162 106 cgDestroyProgram(_particleFP); 163 107 cgDestroyProgram(_particleVP); … … 173 117 174 118 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _fbo); 175 119 176 120 glViewport(0, 0, _renderTargetWidth, _renderTargetHeight); 177 121 glMatrixMode(GL_PROJECTION); … … 190 134 _renderTargetWidth, _renderTargetHeight, 0, 191 135 GL_RGBA, GL_FLOAT, NULL); 192 136 193 137 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 194 138 GL_TEXTURE_RECTANGLE_NV, _tex, 0); … … 280 224 281 225 glPushMatrix(); 282 226 283 227 glScalef(_vfXscale,_vfYscale, _vfZscale); 284 228 glTranslatef(-0.5f, -0.5f, -0.5f); … … 317 261 pos = _samplingPositions[index]; 318 262 pos2 = this->_velocities[index].scale(_projectionVector).scale(_maxVelocityScale) + pos; 319 263 320 264 glVertex3f(pos.x, pos.y, pos.z); 321 265 glVertex3f(pos2.x, pos2.y, pos2.z); … … 328 272 pos = _samplingPositions[index]; 329 273 pos2 = this->_velocities[index].scale(_projectionVector).scale(_maxVelocityScale) + pos; 330 274 331 275 glVertex3f(pos.x, pos.y, pos.z); 332 276 glVertex3f(pos2.x, pos2.y, pos2.z); … … 344 288 glPointSize(20); 345 289 glEnable(GL_VERTEX_PROGRAM_POINT_SIZE_NV); 346 347 #ifdef USE_NANOVIS_LIB 290 348 291 _arrowsTex->activate(); 349 #else350 _arrowsTex->bind(0);351 292 glEnable(GL_TEXTURE_2D); 352 #endif 293 353 294 glPointParameterfARB( GL_POINT_FADE_THRESHOLD_SIZE_ARB, 0.0f ); 354 295 355 296 glPointParameterfARB( GL_POINT_SIZE_MIN_ARB, 1.0f); 356 297 glPointParameterfARB( GL_POINT_SIZE_MAX_ARB, 100.0f); 357 298 glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE ); 358 299 359 300 cgGLBindProgram(_particleVP); 360 301 cgGLBindProgram(_particleFP); 361 302 cgGLEnableProfile(CG_PROFILE_VP40); 362 303 cgGLEnableProfile(CG_PROFILE_FP40); 363 304 364 305 cgGLSetTextureParameter(_vectorParticleParam, _vectorFieldGraphicsID); 365 306 cgGLEnableTextureParameter(_vectorParticleParam); 366 367 307 368 308 //cgSetParameter1f(_mvTanHalfFOVParam, -tan(_fov * 0.5) * _screenHeight * 0.5); 369 309 370 310 cgGLSetStateMatrixParameter(_mvpParticleParam, 371 311 CG_GL_MODELVIEW_PROJECTION_MATRIX, … … 374 314 CG_GL_MODELVIEW_MATRIX, 375 315 CG_GL_MATRIX_IDENTITY); 376 316 377 317 glEnableClientState(GL_VERTEX_ARRAY); 378 318 glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vertexBufferGraphicsID); 379 319 glVertexPointer(3, GL_FLOAT, 0, 0); 380 320 //glEnableClientState(GL_COLOR_ARRAY); 381 321 382 322 // TBD.. 383 323 glDrawArrays(GL_POINTS, 0, _pointCount); 384 324 glPointSize(1); 385 325 glDrawArrays(GL_POINTS, 0, _pointCount); 386 326 387 327 glDisableClientState(GL_VERTEX_ARRAY); 388 328 389 329 cgGLDisableProfile(CG_PROFILE_VP40); 390 330 cgGLDisableProfile(CG_PROFILE_FP40); 391 331 392 332 glDepthMask(GL_TRUE); 393 333 394 334 glDisable(GL_POINT_SPRITE_NV); 395 335 glDisable(GL_VERTEX_PROGRAM_POINT_SIZE_NV); 396 336 397 337 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 398 338 glDisable(GL_BLEND); 399 #ifdef USE_NANOVIS_LIB 400 _arrowsTex->deactivate(); 401 #else 402 _arrowsTex->unbind(); 403 #endif 339 _arrowsTex->deactivate(); 404 340 } 405 341 glPopMatrix(); 406 342 } 407 408 343 409 344 void … … 416 351 _vfZscale = zScale; 417 352 418 //_dirty = true;419 }420 421 void VelocityArrowsSlice::tickCountForMinSizeAxis(int tickCount)422 {423 _tickCountForMinSizeAxis = tickCount;424 425 353 //_dirty = true; 426 354 } … … 561 489 } 562 490 } 563 564 void VelocityArrowsSlice::slicePos(float pos)565 {566 _slicePos = pos;567 _dirty = true;568 }
Note: See TracChangeset
for help on using the changeset viewer.