Changeset 1362
- Timestamp:
- Mar 21, 2009, 4:57:03 PM (16 years ago)
- Location:
- trunk/packages/vizservers/nanovis
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/NvParticleAdvectionShader.cpp
r1331 r1362 23 23 "main"); 24 24 _posTimestepParam = cgGetNamedParameter(_cgFP, "timestep"); 25 _maxParam = cgGetNamedParameter(_cgFP, "max");26 _velTexParam = cgGetNamedParameter(_cgFP, "vel_tex");27 _posTexParam = cgGetNamedParameter(_cgFP, "pos_tex");28 //_tfTexParam = cgGetNamedParameter(_cgFP, "tf_tex");29 _initPosTexParam = cgGetNamedParameter(_cgFP, "init_pos_tex");30 _scaleParam = cgGetNamedParameter(_cgFP, "scale");31 _modeParam = cgGetNamedParameter(_cgFP, "mode");25 _maxParam = cgGetNamedParameter(_cgFP, "max"); 26 _velTexParam = cgGetNamedParameter(_cgFP, "vel_tex"); 27 _posTexParam = cgGetNamedParameter(_cgFP, "pos_tex"); 28 //_tfTexParam = cgGetNamedParameter(_cgFP, "tf_tex"); 29 _initPosTexParam = cgGetNamedParameter(_cgFP, "init_pos_tex"); 30 _scaleParam = cgGetNamedParameter(_cgFP, "scale"); 31 _modeParam = cgGetNamedParameter(_cgFP, "mode"); 32 32 } 33 33 34 34 //void NvParticleAdvectionShader::bind(unsigned int texID, unsigned int tfTexID, unsigned int initPosTexID) 35 void NvParticleAdvectionShader::bind(unsigned int texID, unsigned int initPosTexID) 35 36 void 37 NvParticleAdvectionShader::bind(unsigned int texID, unsigned int initPosTexID) 36 38 { 37 39 cgGLBindProgram(_cgFP); -
trunk/packages/vizservers/nanovis/NvParticleRenderer.cpp
r1333 r1362 27 27 #define NV_32 28 28 29 NvParticleRenderer::NvParticleRenderer(int w, int h, CGcontext context) 30 : scale(1, 1, 1), _activate(false), origin(0, 0, 0) 29 NvParticleRenderer::NvParticleRenderer(int w, int h, CGcontext context) : 30 scale(1, 1, 1), 31 _activate(false), 32 origin(0, 0, 0) 31 33 { 32 34 psys_width = w; … … 54 56 55 57 #ifdef NV_32 56 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 57 #else 58 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 59 #endif 60 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_NV, psys_tex[0], 0); 58 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 59 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 60 #else 61 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 62 0, GL_RGBA, GL_FLOAT, NULL); 63 #endif 64 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 65 GL_TEXTURE_RECTANGLE_NV, psys_tex[0], 0); 61 66 62 67 … … 67 72 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 68 73 #ifdef NV_32 69 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 70 #else 71 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 72 #endif 73 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_RECTANGLE_NV, psys_tex[1], 0); 74 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 75 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 76 #else 77 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 78 0, GL_RGBA, GL_FLOAT, NULL); 79 #endif 80 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 81 GL_TEXTURE_RECTANGLE_NV, psys_tex[1], 0); 74 82 75 83 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); … … 80 88 glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 81 89 #ifdef NV_32 82 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 83 #else 84 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 90 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 91 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 92 #else 93 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, 94 psys_height, 0, GL_RGBA, GL_FLOAT, NULL); 85 95 #endif 86 96 … … 125 135 // I need to find out why GL_FLOAT_RGBA32_NV doesn't work 126 136 #ifdef NV_32 127 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 128 #else 129 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 137 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 138 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 139 #else 140 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, 141 psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 130 142 #endif 131 143 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); … … 137 149 // I need to find out why GL_FLOAT_RGBA32_NV doesn't work 138 150 #ifdef NV_32 139 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 140 #else 141 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 151 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 152 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)p); 153 #else 154 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 155 0, GL_RGBA, GL_FLOAT, (float*)p); 142 156 #endif 143 157 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); … … 151 165 152 166 #ifdef NV_32 153 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)data); 154 #else 155 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)data);# 156 #endif 157 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); 158 167 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_FLOAT_RGBA32_NV, 168 psys_width, psys_height, 0, GL_RGBA, GL_FLOAT, (float*)data); 169 #else 170 glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, psys_width, psys_height, 171 0, GL_RGBA, GL_FLOAT, (float*)data); 172 #endif 173 glBindTexture(GL_TEXTURE_RECTANGLE_NV, 0); 159 174 flip = true; 160 175 reborn = false; … … 162 177 } 163 178 164 void NvParticleRenderer::advect() 179 void 180 NvParticleRenderer::advect() 165 181 { 166 182 if (reborn) … … 170 186 glDisable(GL_DEPTH_TEST); 171 187 172 if (flip) 173 { 174 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, psys_fbo[1]); 175 glEnable(GL_TEXTURE_RECTANGLE_NV); 176 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[0]); 177 178 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 179 //glClear(GL_COLOR_BUFFER_BIT); 180 181 glViewport(0, 0, psys_width, psys_height); 182 glMatrixMode(GL_PROJECTION); 183 glLoadIdentity(); 184 //gluOrtho2D(0, psys_width, 0, psys_height); 185 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 186 glMatrixMode(GL_MODELVIEW); 187 glLoadIdentity(); 188 189 _advectionShader->bind(psys_tex[0], initPosTex); 190 191 //cgGLBindProgram(m_pos_fprog); 192 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 193 //cgGLEnableTextureParameter(m_vel_tex_param); 194 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[0]); 195 //cgGLEnableTextureParameter(m_pos_tex_param); 196 //cgGLEnableProfile(CG_PROFILE_FP30); 197 198 draw_quad(psys_width, psys_height, psys_width, psys_height); 199 200 //cgGLDisableProfile(CG_PROFILE_FP30); 201 //cgGLDisableTextureParameter(m_vel_tex_param); 202 //cgGLDisableTextureParameter(m_pos_tex_param); 203 glDisable(GL_TEXTURE_RECTANGLE_NV); 204 } 205 else 206 { 207 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, psys_fbo[0]); 208 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[1]); 209 210 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 211 //glClear(GL_COLOR_BUFFER_BIT); 212 213 glViewport(0, 0, psys_width, psys_height); 214 glMatrixMode(GL_PROJECTION); 215 glLoadIdentity(); 216 //gluOrtho2D(0, psys_width, 0, psys_height); 217 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 218 glMatrixMode(GL_MODELVIEW); 219 glLoadIdentity(); 220 221 _advectionShader->bind(psys_tex[1], initPosTex); 222 223 //cgGLBindProgram(m_pos_fprog); 224 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 225 //cgGLEnableTextureParameter(m_vel_tex_param); 226 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[1]); 227 //cgGLEnableTextureParameter(m_pos_tex_param); 228 //cgGLEnableProfile(CG_PROFILE_FP30); 229 230 draw_quad(psys_width, psys_height, psys_width, psys_height); 231 //draw_quad(psys_width, psys_height, 1.0f, 1.0f); 232 233 //cgGLDisableProfile(CG_PROFILE_FP30); 234 //cgGLDisableTextureParameter(m_vel_tex_param); 235 //cgGLDisableTextureParameter(m_pos_tex_param); 236 } 237 188 if (flip) { 189 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, psys_fbo[1]); 190 glEnable(GL_TEXTURE_RECTANGLE_NV); 191 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[0]); 192 193 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 194 //glClear(GL_COLOR_BUFFER_BIT); 195 196 glViewport(0, 0, psys_width, psys_height); 197 glMatrixMode(GL_PROJECTION); 198 glLoadIdentity(); 199 //gluOrtho2D(0, psys_width, 0, psys_height); 200 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 201 glMatrixMode(GL_MODELVIEW); 202 glLoadIdentity(); 203 204 _advectionShader->bind(psys_tex[0], initPosTex); 205 206 //cgGLBindProgram(m_pos_fprog); 207 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 208 //cgGLEnableTextureParameter(m_vel_tex_param); 209 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[0]); 210 //cgGLEnableTextureParameter(m_pos_tex_param); 211 //cgGLEnableProfile(CG_PROFILE_FP30); 212 213 draw_quad(psys_width, psys_height, psys_width, psys_height); 214 215 //cgGLDisableProfile(CG_PROFILE_FP30); 216 //cgGLDisableTextureParameter(m_vel_tex_param); 217 //cgGLDisableTextureParameter(m_pos_tex_param); 218 glDisable(GL_TEXTURE_RECTANGLE_NV); 219 } else { 220 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, psys_fbo[0]); 221 glBindTexture(GL_TEXTURE_RECTANGLE_NV, psys_tex[1]); 222 223 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 224 //glClear(GL_COLOR_BUFFER_BIT); 225 226 glViewport(0, 0, psys_width, psys_height); 227 glMatrixMode(GL_PROJECTION); 228 glLoadIdentity(); 229 //gluOrtho2D(0, psys_width, 0, psys_height); 230 glOrtho(0, psys_width, 0, psys_height, -10.0f, 10.0f); 231 glMatrixMode(GL_MODELVIEW); 232 glLoadIdentity(); 233 234 _advectionShader->bind(psys_tex[1], initPosTex); 235 236 //cgGLBindProgram(m_pos_fprog); 237 //cgGLSetParameter1f(m_pos_timestep_param, 0.05); 238 //cgGLEnableTextureParameter(m_vel_tex_param); 239 //cgGLSetTextureParameter(m_pos_tex_param, psys_tex[1]); 240 //cgGLEnableTextureParameter(m_pos_tex_param); 241 //cgGLEnableProfile(CG_PROFILE_FP30); 242 243 draw_quad(psys_width, psys_height, psys_width, psys_height); 244 //draw_quad(psys_width, psys_height, 1.0f, 1.0f); 245 246 //cgGLDisableProfile(CG_PROFILE_FP30); 247 //cgGLDisableTextureParameter(m_vel_tex_param); 248 //cgGLDisableTextureParameter(m_pos_tex_param); 249 } 250 238 251 _advectionShader->unbind(); 239 252 240 253 //soft_read_verts(); 241 254 242 255 update_vertex_buffer(); 243 256 244 257 flip = (!flip); 245 258 246 259 psys_frame++; 247 if(psys_frame==max_life) 248 { 249 psys_frame=0; 250 reborn = true; 251 } 252 260 if(psys_frame==max_life) { 261 psys_frame=0; 262 reborn = true; 263 } 253 264 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 254 265 } 255 266 256 void NvParticleRenderer::update_vertex_buffer() 267 void 268 NvParticleRenderer::update_vertex_buffer() 257 269 { 258 270 m_vertex_array->Read(psys_width, psys_height); … … 262 274 } 263 275 264 void NvParticleRenderer::render() 276 void 277 NvParticleRenderer::render() 265 278 { 266 279 display_vertices(); 267 280 } 268 281 269 void NvParticleRenderer::draw_bounding_box(270 271 float x1, float y1, float z1,272 float r, float g, float b,273 float line_width)282 void 283 NvParticleRenderer::draw_bounding_box(float x0, float y0, float z0, 284 float x1, float y1, float z1, 285 float r, float g, float b, 286 float line_width) 274 287 { 275 288 glPushMatrix(); … … 281 294 glLineWidth(line_width); 282 295 283 glBegin(GL_LINE_LOOP); 296 glBegin(GL_LINE_LOOP); 284 297 { 285 298 glVertex3d(x0, y0, z0); … … 299 312 glEnd(); 300 313 301 302 314 glBegin(GL_LINE_LOOP); 303 315 { … … 324 336 } 325 337 326 void NvParticleRenderer::display_vertices() 338 void 339 NvParticleRenderer::display_vertices() 327 340 { 328 341 glDisable(GL_TEXTURE_2D); … … 369 382 } 370 383 371 void NvParticleRenderer::setVectorField(unsigned int texID, const Vector3& ori, float scaleX, float scaleY, float scaleZ, float max) 384 void 385 NvParticleRenderer::setVectorField(unsigned int texID, const Vector3& ori, 386 float scaleX, float scaleY, float scaleZ, 387 float max) 372 388 { 373 389 origin = ori; -
trunk/packages/vizservers/nanovis/VolumeRenderer.h
r900 r1362 40 40 41 41 class VolumeRenderer { 42 43 42 friend class NanoVis; 44 43 private: … … 57 56 NvRegularVolumeShader* _regularVolumeShader; 58 57 59 60 58 /** 61 * Shader parameters for rendering a single zincblende orbital. 62 * A simulation contains S, P, D and SS, total of 4 orbitals. A full rendering requires 4 zincblende orbital volumes. 63 * A zincblende orbital volume is decomposed into two "interlocking" cubic volumes and passed to the shader. 64 * We render each orbital with its own independent transfer functions then blend the result. 59 * Shader parameters for rendering a single zincblende orbital. A 60 * simulation contains S, P, D and SS, total of 4 orbitals. A full 61 * rendering requires 4 zincblende orbital volumes. A zincblende orbital 62 * volume is decomposed into two "interlocking" cubic volumes and passed 63 * to the shader. We render each orbital with its own independent 64 * transfer functions then blend the result. 65 65 * 66 * The engine is already capable of rendering multiple volumes and combine them. Thus, we just invoke this shader on 67 * S, P, D and SS orbitals with different transfor functions. The result is a multi-orbital rendering. 68 * This is equivalent to rendering 4 unrelated data sets occupying the same space. 66 * The engine is already capable of rendering multiple volumes and combine 67 * them. Thus, we just invoke this shader on S, P, D and SS orbitals with 68 * different transfor functions. The result is a multi-orbital rendering. 69 * This is equivalent to rendering 4 unrelated data sets occupying the 70 * same space. 69 71 */ 70 72 NvZincBlendeVolumeShader* _zincBlendeShader; 71 72 73 73 74 /** … … 76 77 NvStdVertexShader* _stdVertexShader; 77 78 78 //standard vertex shader parameters 79 CGprogram m_vert_std_vprog; 80 CGparameter m_mvp_vert_std_param; 81 CGparameter m_mvi_vert_std_param; 79 //standard vertex shader parameters 80 CGprogram m_vert_std_vprog; 81 CGparameter m_mvp_vert_std_param; 82 CGparameter m_mvi_vert_std_param; 83 GLuint font_base; // The base of the font display list. 84 GLuint font_texture; //the id of the font texture 82 85 83 void init_shaders(); 84 void activate_volume_shader(Volume* vol, TransferFunction* tf, bool slice_mode); 85 void deactivate_volume_shader(); 86 void init_shaders(); 87 void activate_volume_shader(Volume* vol, TransferFunction* tf, 88 bool slice_mode); 89 void deactivate_volume_shader(); 90 //draw bounding box 91 void draw_bounding_box(float x0, float y0, float z0, 92 float x1, float y1, float z1, 93 float r, float g, float b, float line_width); 86 94 87 //draw bounding box 88 void draw_bounding_box(float x0, float y0, float z0, 89 float x1, float y1, float z1, 90 float r, float g, float b, float line_width); 91 92 void get_near_far_z(Mat4x4 mv, double &zNear, double &zFar); 93 94 void init_font(const char* filename); 95 GLuint font_texture; //the id of the font texture 96 void glPrint(char* string, int set); //there are two sets of font in the texture. 0, 1 97 void draw_label(Volume* vol); //draw label using bitmap texture 98 GLuint font_base; //the base of the font display list 99 void build_font(); //register the location of each alphabet in the texture 95 void get_near_far_z(Mat4x4 mv, double &zNear, double &zFar); 96 void init_font(const char* filename); 97 void glPrint(char* string, int set); //there are two sets of font in the 98 //texture. 0, 1 99 void draw_label(Volume* vol); //draw label using bitmap texture 100 // the texture. 101 void build_font(); // Register the location of each alphabet in 100 102 101 103 public: 102 VolumeRenderer();103 ~VolumeRenderer();104 VolumeRenderer(); 105 ~VolumeRenderer(); 104 106 105 int add_volume(Volume* _vol, TransferFunction* _tf);106 //add a volume and its transfer function107 //we require a transfer function when a108 //volume is added.109 void shade_volume(Volume* _vol, TransferFunction* _tf);110 TransferFunction* get_volume_shading(Volume* _vol);107 int add_volume(Volume* _vol, TransferFunction* _tf); 108 // add a volume and its transfer function 109 // we require a transfer function when a 110 // volume is added. 111 void shade_volume(Volume* _vol, TransferFunction* _tf); 112 TransferFunction* get_volume_shading(Volume* _vol); 111 113 112 void render(int volume_index);113 void render_all(); //render all enabled volumes;114 void render_all_points();//render all enabled volumes;115 void set_specular(float val);116 void set_diffuse(float val);117 void set_slice_mode(bool val); //control independently.118 void set_volume_mode(bool val);119 void switch_slice_mode(); //switch_cutplane_mode120 void switch_volume_mode();121 void enable_volume(int index); //enable a volume122 void disable_volume(int index); //disable a volume114 void render(int volume_index); 115 void render_all(); //render all enabled volumes; 116 void render_all_points(void); //render all enabled volumes; 117 void set_specular(float val); 118 void set_diffuse(float val); 119 void set_slice_mode(bool val); //control independently. 120 void set_volume_mode(bool val); 121 void switch_slice_mode(); //switch_cutplane_mode 122 void switch_volume_mode(); 123 void enable_volume(int index); //enable a volume 124 void disable_volume(int index); //disable a volume 123 125 124 void clearAnimatedVolumeInfo(); 125 void addAnimatedVolume(Volume* volume, unsigned int volumeId); 126 void startVolumeAnimation(); 127 void stopVolumeAnimation(); 128 129 VolumeInterpolator* getVolumeInterpolator(); 126 void clearAnimatedVolumeInfo(void) { 127 _volumeInterpolator->clearAll(); 128 } 129 void addAnimatedVolume(Volume* volume, unsigned int volumeId) { 130 _volumeInterpolator->addVolume(volume, volumeId); 131 } 132 void startVolumeAnimation(void) { 133 _volumeInterpolator->start(); 134 } 135 void stopVolumeAnimation(void) { 136 _volumeInterpolator->stop(); 137 } 138 VolumeInterpolator* getVolumeInterpolator(void) { 139 return _volumeInterpolator; 140 } 130 141 }; 131 142 132 inline void VolumeRenderer::clearAnimatedVolumeInfo() 133 { 134 _volumeInterpolator->clearAll(); 135 } 136 137 inline void VolumeRenderer::addAnimatedVolume(Volume* volume, unsigned int volumeId) 138 { 139 _volumeInterpolator->addVolume(volume, volumeId); 140 } 141 142 inline void VolumeRenderer::startVolumeAnimation() 143 { 144 _volumeInterpolator->start(); 145 } 146 147 inline void VolumeRenderer::stopVolumeAnimation() 148 { 149 _volumeInterpolator->stop(); 150 } 151 152 inline VolumeInterpolator* VolumeRenderer::getVolumeInterpolator() 153 { 154 return _volumeInterpolator; 155 } 156 157 #endif 143 #endif /*_VOLUME_RENDERER_H_*/
Note: See TracChangeset
for help on using the changeset viewer.