Changeset 617 for trunk/gui/vizservers/nanovis/VolumeRenderer.cpp
- Timestamp:
- Mar 8, 2007, 5:56:29 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/vizservers/nanovis/VolumeRenderer.cpp
r580 r617 14 14 */ 15 15 16 #include <R2/R2string.h> 17 #include <R2/R2FilePath.h> 16 18 #include "VolumeRenderer.h" 17 18 19 VolumeRenderer::VolumeRenderer(CGcontext _context): 19 #include "NvStdVertexShader.h" 20 21 22 VolumeRenderer::VolumeRenderer(): 20 23 n_volumes(0), 21 g_context(_context),22 24 slice_mode(false), 23 25 volume_mode(true) 24 26 { 25 volume.clear(); 26 tf.clear(); 27 28 init_shaders(); 29 init_font("/opt/nanovis/lib/font/Font.bmp"); 27 volume.clear(); 28 tf.clear(); 29 30 init_shaders(); 31 32 R2string path = R2FilePath::getInstance()->getPath("Font.bmp"); 33 init_font((const char*) path); 30 34 } 31 35 32 36 VolumeRenderer::~VolumeRenderer() 33 37 { 34 delete m_zincBlendeShader;35 delete m_regularVolumeShader;36 delete m_volQDVolumeShader;38 delete _zincBlendeShader; 39 delete _regularVolumeShader; 40 delete _stdVertexShader; 37 41 } 38 42 … … 41 45 42 46 //standard vertex program 43 m_vert_std_vprog = loadProgram(g_context, CG_PROFILE_VP30, CG_SOURCE, "/opt/nanovis/lib/shaders/vertex_std.cg"); 44 m_mvp_vert_std_param = cgGetNamedParameter(m_vert_std_vprog, "modelViewProjMatrix"); 45 m_mvi_vert_std_param = cgGetNamedParameter(m_vert_std_vprog, "modelViewInv"); 46 47 _stdVertexShader = new NvStdVertexShader(); 47 48 48 49 //volume rendering shader: one cubic volume 49 m_regularVolumeShader = new NvRegularVolumeShader();50 _regularVolumeShader = new NvRegularVolumeShader(); 50 51 51 52 //volume rendering shader: one zincblende orbital volume. … … 57 58 //The engine is already capable of rendering multiple volumes and combine them. Thus, we just invoke this shader on 58 59 //S, P, D and SS orbitals with different transfor functions. The result is a multi-orbital rendering. 59 m_zincBlendeShader = new NvZincBlendeVolumeShader(); 60 61 m_volQDVolumeShader = new NvVolQDVolumeShader(); 60 _zincBlendeShader = new NvZincBlendeVolumeShader(); 62 61 } 63 62 … … 669 668 670 669 671 void VolumeRenderer::activate_volume_shader(int volume_index, bool slice_mode) {672 670 void VolumeRenderer::activate_volume_shader(int volume_index, bool slice_mode) 671 { 673 672 //vertex shader 674 cgGLSetStateMatrixParameter(m_mvp_vert_std_param, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); 675 cgGLSetStateMatrixParameter(m_mvi_vert_std_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE); 676 cgGLBindProgram(m_vert_std_vprog); 677 cgGLEnableProfile(CG_PROFILE_VP30); 678 673 _stdVertexShader->bind(); 679 674 680 675 if (volume[volume_index]->volume_type == CUBIC) 681 676 { 682 677 //regular cubic volume 683 m_regularVolumeShader->bind(tf[volume_index]->id, volume[volume_index], slice_mode); 684 } 685 678 _regularVolumeShader->bind(tf[volume_index]->id, volume[volume_index], slice_mode); 679 } 686 680 else if (volume[volume_index]->volume_type == ZINCBLENDE) 687 681 { 688 m_zincBlendeShader->bind(tf[volume_index]->id, volume[volume_index], slice_mode); 689 } 690 else if (volume[volume_index]->volume_type == VOLQD) 691 { 692 m_volQDVolumeShader->bind(tf[volume_index]->id, volume[volume_index], slice_mode); 682 _zincBlendeShader->bind(tf[volume_index]->id, volume[volume_index], slice_mode); 693 683 } 694 684 } … … 697 687 void VolumeRenderer::deactivate_volume_shader() 698 688 { 699 cgGLDisableProfile(CG_PROFILE_VP30); 700 701 m_regularVolumeShader->unbind(); 702 m_zincBlendeShader->unbind(); 689 _stdVertexShader->unbind(); 690 _regularVolumeShader->unbind(); 691 _zincBlendeShader->unbind(); 703 692 } 704 693 … … 756 745 757 746 758 void VolumeRenderer::init_font(c har* filename) {747 void VolumeRenderer::init_font(const char* filename) { 759 748 760 749 FILE *file;
Note: See TracChangeset
for help on using the changeset viewer.