VTK
vtkSmartVolumeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSmartVolumeMapper.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
108 #ifndef vtkSmartVolumeMapper_h
109 #define vtkSmartVolumeMapper_h
110 
111 #include "vtkRenderingVolumeOpenGLModule.h" // For export macro
112 #include "vtkVolumeMapper.h"
113 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
114 
117 class vtkImageResample;
118 class vtkRenderWindow;
119 class vtkVolume;
120 class vtkVolumeProperty;
122 
124 {
125 public:
128  void PrintSelf( ostream& os, vtkIndent indent );
129 
131 
137  vtkSetMacro( FinalColorWindow, float );
139 
141 
142  vtkGetMacro( FinalColorWindow, float );
144 
146 
150  vtkSetMacro( FinalColorLevel, float );
152 
154 
155  vtkGetMacro( FinalColorLevel, float );
157 
158 //BTX
159 // The possible values for the default and current render mode ivars
160  enum
161  {
162  DefaultRenderMode=0,
168  InvalidRenderMode
169  };
170 //ETX
171 
175 
181 
186 
190 
197 
203 
205 
206  vtkGetMacro( RequestedRenderMode, int );
208 
210 
215  vtkSetClampMacro( InteractiveUpdateRate, double, 1.0e-10, 1.0e10 );
217 
219 
221  vtkGetMacro( InteractiveUpdateRate, double );
223 
227 
229 
233  vtkSetMacro( MaxMemoryInBytes, vtkIdType );
234  vtkGetMacro( MaxMemoryInBytes, vtkIdType );
236 
238 
241  vtkSetClampMacro( MaxMemoryFraction, float, 0.1f, 1.0f );
242  vtkGetMacro( MaxMemoryFraction, float );
244 
246 
248  vtkSetClampMacro(InterpolationMode, int,
250  vtkGetMacro(InterpolationMode, int);
255 
257 
261  vtkVolume *volume,
262  vtkVolume *volume2,
264  int blend_mode,
265  double viewDirection[3],
266  double viewUp[3] );
268 
269 
270 //BTX
274 
276 
281 //ETX
283 
284 protected:
287 
292 
297 
298  // Window / level ivars
301 
302  // GPU mapper-specific memory ivars.
305 
306  // Used for downsampling.
308 
309  // The requested render mode is used to compute the current render mode. Note
310  // that the current render mode can be invalid if the requested mode is not
311  // supported.
314 
315  // Initialization variables.
322 
323  // This is the resample filter that may be used if we need to
324  // create a low resolution version of the volume for GPU rendering
326 
327  // If the DesiredUpdateRate of the vtkRenderWindow causing the Render is at
328  // or above this value, the render is considered interactive. Otherwise it is
329  // considered still.
331 
332  // The initialize method. Called from ComputeRenderMode whenever something
333  // relevant has changed.
335  vtkVolume *vol);
336 
337  // The method that computes the render mode from the requested render mode
338  // based on the support status for each render method.
340  vtkVolume *vol);
341 
342  // The three potential mappers
347 
348 
349  // We need to keep track of the blend mode we had when we initialized
350  // because we need to reinitialize (and recheck hardware support) if
351  // it changes
353 
354 private:
355  vtkSmartVolumeMapper(const vtkSmartVolumeMapper&); // Not implemented.
356  void operator=(const vtkSmartVolumeMapper&); // Not implemented.
357 };
358 
359 #endif
vtkVolumeTextureMapper3D
volume render with 3D texture mapping
Definition: vtkVolumeTextureMapper3D.h:93
vtkVolumeMapper
Abstract class for a volume mapper.
Definition: vtkVolumeMapper.h:46
vtkSmartVolumeMapper::SetRequestedRenderMode
void SetRequestedRenderMode(int mode)
vtkImageReslice.h
vtkSmartVolumeMapper::FinalColorLevel
float FinalColorLevel
Definition: vtkSmartVolumeMapper.h:300
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
vtkSmartVolumeMapper::SupportStatusCheckTime
vtkTimeStamp SupportStatusCheckTime
Definition: vtkSmartVolumeMapper.h:317
vtkgl::m
const GLfloat * m
Definition: vtkgl.h:18169
vtkSmartVolumeMapper::SetInterpolationModeToLinear
void SetInterpolationModeToLinear()
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkSmartVolumeMapper::ConnectFilterInput
void ConnectFilterInput(vtkImageResample *f)
vtkFixedPointVolumeRayCastMapper
A fixed point mapper for volumes.
Definition: vtkFixedPointVolumeRayCastMapper.h:110
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkSmartVolumeMapper::InteractiveUpdateRate
double InteractiveUpdateRate
Definition: vtkSmartVolumeMapper.h:330
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkSmartVolumeMapper::GPUSupported
int GPUSupported
Definition: vtkSmartVolumeMapper.h:319
vtkSmartVolumeMapper::vtkSmartVolumeMapper
vtkSmartVolumeMapper()
vtkSmartVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *)
vtkSmartVolumeMapper::SetInterpolationModeToNearestNeighbor
void SetInterpolationModeToNearestNeighbor()
vtkSmartVolumeMapper::RayCastSupported
int RayCastSupported
Definition: vtkSmartVolumeMapper.h:320
vtkSmartVolumeMapper::CurrentRenderMode
int CurrentRenderMode
Definition: vtkSmartVolumeMapper.h:313
vtkSmartVolumeMapper::New
static vtkSmartVolumeMapper * New()
vtkSmartVolumeMapper::MaxMemoryFraction
float MaxMemoryFraction
Definition: vtkSmartVolumeMapper.h:304
vtkSmartVolumeMapper::CreateCanonicalView
void CreateCanonicalView(vtkRenderer *ren, vtkVolume *volume, vtkVolume *volume2, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
vtkSmartVolumeMapper::GPULowResMapper
vtkGPUVolumeRayCastMapper * GPULowResMapper
Definition: vtkSmartVolumeMapper.h:343
vtkSmartVolumeMapper::SetRequestedRenderModeToRayCast
void SetRequestedRenderModeToRayCast()
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
vtkSmartVolumeMapper::RayCastRenderMode
@ RayCastRenderMode
Definition: vtkSmartVolumeMapper.h:164
vtkSmartVolumeMapper::TextureSupported
int TextureSupported
Definition: vtkSmartVolumeMapper.h:318
vtkSmartVolumeMapper::TextureMapper
vtkVolumeTextureMapper3D * TextureMapper
Definition: vtkSmartVolumeMapper.h:346
vtkSmartVolumeMapper::UndefinedRenderMode
@ UndefinedRenderMode
Definition: vtkSmartVolumeMapper.h:167
VTKRENDERINGVOLUMEOPENGL_EXPORT
#define VTKRENDERINGVOLUMEOPENGL_EXPORT
Definition: vtkRenderingVolumeOpenGLModule.h:15
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkSmartVolumeMapper::InterpolationMode
int InterpolationMode
Definition: vtkSmartVolumeMapper.h:307
vtkSmartVolumeMapper::GPURenderMode
@ GPURenderMode
Definition: vtkSmartVolumeMapper.h:166
vtkImageResample
Resamples an image to be larger or smaller.
Definition: vtkImageResample.h:38
vtkSmartVolumeMapper::TextureRenderMode
@ TextureRenderMode
Definition: vtkSmartVolumeMapper.h:165
VTK_RESLICE_CUBIC
#define VTK_RESLICE_CUBIC
Definition: vtkImageReslice.h:67
vtkVolumeMapper.h
vtkSmartVolumeMapper::SetRequestedRenderModeToRayCastAndTexture
void SetRequestedRenderModeToRayCastAndTexture()
vtkSmartVolumeMapper::ComputeRenderMode
void ComputeRenderMode(vtkRenderer *ren, vtkVolume *vol)
vtkSmartVolumeMapper::RayCastMapper
vtkFixedPointVolumeRayCastMapper * RayCastMapper
Definition: vtkSmartVolumeMapper.h:345
vtkSmartVolumeMapper::Initialized
int Initialized
Definition: vtkSmartVolumeMapper.h:316
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkSmartVolumeMapper
Adaptive volume mapper.
Definition: vtkSmartVolumeMapper.h:124
vtkSmartVolumeMapper::SetRequestedRenderModeToTexture
void SetRequestedRenderModeToTexture()
vtkGPUVolumeRayCastMapper
Ray casting performed on the GPU.
Definition: vtkGPUVolumeRayCastMapper.h:41
vtkSmartVolumeMapper::SetInterpolationModeToCubic
void SetInterpolationModeToCubic()
VTK_RESLICE_NEAREST
#define VTK_RESLICE_NEAREST
Definition: vtkImageReslice.h:65
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkSmartVolumeMapper::InitializedBlendMode
int InitializedBlendMode
Definition: vtkSmartVolumeMapper.h:352
vtkSmartVolumeMapper::RequestedRenderMode
int RequestedRenderMode
Definition: vtkSmartVolumeMapper.h:312
vtkSmartVolumeMapper::SetRequestedRenderModeToDefault
void SetRequestedRenderModeToDefault()
vtkSmartVolumeMapper::RayCastAndTextureRenderMode
@ RayCastAndTextureRenderMode
Definition: vtkSmartVolumeMapper.h:163
vtkgl::f
GLclampf f
Definition: vtkgl.h:14181
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkSmartVolumeMapper::GetLastUsedRenderMode
int GetLastUsedRenderMode()
vtkSmartVolumeMapper::LowResGPUNecessary
int LowResGPUNecessary
Definition: vtkSmartVolumeMapper.h:321
vtkSmartVolumeMapper::~vtkSmartVolumeMapper
~vtkSmartVolumeMapper()
vtkSmartVolumeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkSmartVolumeMapper::GPUResampleFilter
vtkImageResample * GPUResampleFilter
Definition: vtkSmartVolumeMapper.h:325
vtkSmartVolumeMapper::MaxMemoryInBytes
vtkIdType MaxMemoryInBytes
Definition: vtkSmartVolumeMapper.h:303
vtkSmartVolumeMapper::SetRequestedRenderModeToGPU
void SetRequestedRenderModeToGPU()
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:89
vtkSmartVolumeMapper::Initialize
void Initialize(vtkRenderer *ren, vtkVolume *vol)
vtkSmartVolumeMapper::ConnectMapperInput
void ConnectMapperInput(vtkVolumeMapper *m)
vtkgl::mode
GLenum mode
Definition: vtkgl.h:12325
vtkSmartVolumeMapper::FinalColorWindow
float FinalColorWindow
Definition: vtkSmartVolumeMapper.h:299
vtkgl::image
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: vtkgl.h:11341
vtkSmartVolumeMapper::Render
void Render(vtkRenderer *, vtkVolume *)
vtkRenderingVolumeOpenGLModule.h
vtkVolumeProperty
represents the common properties for rendering a volume.
Definition: vtkVolumeProperty.h:60
vtkSmartVolumeMapper::GPUMapper
vtkGPUVolumeRayCastMapper * GPUMapper
Definition: vtkSmartVolumeMapper.h:344