#include <vtkVolumeTextureMapper3D.h>
vtkVolumeTextureMapper3D renders a volume using 3D texture mapping. This class is actually an abstract superclass - with all the actual work done by vtkOpenGLVolumeTextureMapper3D.
This mappers currently supports:
This mapper does not support:
Internally, this mapper will potentially change the resolution of the input data. The data will be resampled to be a power of two in each direction, and also no greater than 128*256*256 voxels (any aspect) for one or two component data, or 128*128*256 voxels (any aspect) for four component data. The limits are currently hardcoded after a check using the GL_PROXY_TEXTURE3D because some graphics drivers were always responding "yes" to the proxy call despite not being able to allocate that much texture memory.
Currently, calculations are computed using 8 bits per RGBA channel. In the future this should be expanded to handle newer boards that can support 15 bit float compositing.
This mapper supports two main families of graphics hardware: nvidia and ATI. There are two different implementations of 3D texture mapping used - one based on nvidia's GL_NV_texture_shader2 and GL_NV_register_combiners2 extension, and one based on ATI's GL_ATI_fragment_shader (supported also by some nvidia boards) To use this class in an application that will run on various hardware configurations, you should have a back-up volume rendering method. You should create a vtkVolumeTextureMapper3D, assign its input, make sure you have a current OpenGL context (you've rendered at least once), then call IsRenderSupported with a vtkVolumeProperty as an argument. This method will return 0 if the input has more than one independent component, or if the graphics hardware does not support the set of required extensions for using at least one of the two implemented methods (nvidia or ati)
Definition at line 82 of file vtkVolumeTextureMapper3D.h.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 85 of file vtkVolumeTextureMapper3D.h.
anonymous enum |
What rendering method is supported?
Definition at line 132 of file vtkVolumeTextureMapper3D.h.
vtkVolumeTextureMapper3D::vtkVolumeTextureMapper3D | ( | ) | [protected] |
vtkVolumeTextureMapper3D::~vtkVolumeTextureMapper3D | ( | ) | [protected] |
virtual const char* vtkVolumeTextureMapper3D::GetClassName | ( | ) | [virtual] |
static int vtkVolumeTextureMapper3D::IsTypeOf | ( | const char * | name | ) | [static] |
Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
virtual int vtkVolumeTextureMapper3D::IsA | ( | const char * | name | ) | [virtual] |
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
static vtkVolumeTextureMapper3D* vtkVolumeTextureMapper3D::SafeDownCast | ( | vtkObject * | o | ) | [static] |
void vtkVolumeTextureMapper3D::PrintSelf | ( | ostream & | os, | |
vtkIndent | indent | |||
) | [virtual] |
Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
static vtkVolumeTextureMapper3D* vtkVolumeTextureMapper3D::New | ( | ) | [static] |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkAlgorithm.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
virtual void vtkVolumeTextureMapper3D::SetSampleDistance | ( | float | ) | [virtual] |
The distance at which to space sampling planes. This may not be honored for interactive renders. An interactive render is defined as one that has less than 1 second of allocated render time.
virtual float vtkVolumeTextureMapper3D::GetSampleDistance | ( | ) | [virtual] |
The distance at which to space sampling planes. This may not be honored for interactive renders. An interactive render is defined as one that has less than 1 second of allocated render time.
virtual int* vtkVolumeTextureMapper3D::GetVolumeDimensions | ( | ) | [virtual] |
These are the dimensions of the 3D texture
virtual void vtkVolumeTextureMapper3D::GetVolumeDimensions | ( | int | data[3] | ) | [virtual] |
These are the dimensions of the 3D texture
virtual float* vtkVolumeTextureMapper3D::GetVolumeSpacing | ( | ) | [virtual] |
This is the spacing of the 3D texture
virtual void vtkVolumeTextureMapper3D::GetVolumeSpacing | ( | float | data[3] | ) | [virtual] |
This is the spacing of the 3D texture
virtual int vtkVolumeTextureMapper3D::IsRenderSupported | ( | vtkVolumeProperty * | ) | [inline, virtual] |
Based on hardware and properties, we may or may not be able to render using 3D texture mapping. This indicates if 3D texture mapping is supported by the hardware, and if the other extensions necessary to support the specific properties are available.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 112 of file vtkVolumeTextureMapper3D.h.
virtual int vtkVolumeTextureMapper3D::GetNumberOfPolygons | ( | ) | [virtual] |
Allow access to the number of polygons used for the rendering.
virtual float vtkVolumeTextureMapper3D::GetActualSampleDistance | ( | ) | [virtual] |
Allow access to the actual sample distance used to render the image.
virtual void vtkVolumeTextureMapper3D::Render | ( | vtkRenderer * | , | |
vtkVolume * | ||||
) | [inline, virtual] |
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERING PROCESS Render the volume
Implements vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 128 of file vtkVolumeTextureMapper3D.h.
virtual void vtkVolumeTextureMapper3D::SetPreferredRenderMethod | ( | int | ) | [virtual] |
Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.
void vtkVolumeTextureMapper3D::SetPreferredMethodToFragmentProgram | ( | ) | [inline] |
Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.
Definition at line 148 of file vtkVolumeTextureMapper3D.h.
void vtkVolumeTextureMapper3D::SetPreferredMethodToNVidia | ( | ) | [inline] |
Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.
Definition at line 150 of file vtkVolumeTextureMapper3D.h.
virtual int vtkVolumeTextureMapper3D::GetPreferredRenderMethod | ( | ) | [virtual] |
Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.
void vtkVolumeTextureMapper3D::ComputePolygons | ( | vtkRenderer * | ren, | |
vtkVolume * | vol, | |||
double | bounds[6] | |||
) | [protected] |
For the given viewing direction, compute the set of polygons.
int vtkVolumeTextureMapper3D::UpdateVolumes | ( | vtkVolume * | ) | [protected] |
Update the internal RGBA representation of the volume. Return 1 if anything change, 0 if nothing changed.
int vtkVolumeTextureMapper3D::UpdateColorLookup | ( | vtkVolume * | ) | [protected] |
Update the internal RGBA representation of the volume. Return 1 if anything change, 0 if nothing changed.
virtual int vtkVolumeTextureMapper3D::IsTextureSizeSupported | ( | int | [3] | ) | [inline, protected, virtual] |
Impemented in subclass - check is texture size is OK. BTX
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 216 of file vtkVolumeTextureMapper3D.h.
float* vtkVolumeTextureMapper3D::PolygonBuffer [protected] |
Definition at line 160 of file vtkVolumeTextureMapper3D.h.
float* vtkVolumeTextureMapper3D::IntersectionBuffer [protected] |
Definition at line 161 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::NumberOfPolygons [protected] |
Definition at line 162 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::BufferSize [protected] |
Definition at line 163 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume1 [protected] |
Definition at line 165 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume2 [protected] |
Definition at line 166 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume3 [protected] |
Definition at line 167 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeSize [protected] |
Definition at line 168 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeComponents [protected] |
Definition at line 169 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeDimensions[3] [protected] |
Definition at line 170 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::VolumeSpacing[3] [protected] |
Definition at line 171 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SampleDistance [protected] |
Definition at line 173 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ActualSampleDistance [protected] |
Definition at line 174 of file vtkVolumeTextureMapper3D.h.
vtkImageData* vtkVolumeTextureMapper3D::SavedTextureInput [protected] |
Definition at line 176 of file vtkVolumeTextureMapper3D.h.
Definition at line 177 of file vtkVolumeTextureMapper3D.h.
Definition at line 179 of file vtkVolumeTextureMapper3D.h.
Definition at line 180 of file vtkVolumeTextureMapper3D.h.
Definition at line 181 of file vtkVolumeTextureMapper3D.h.
Definition at line 182 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::SavedColorChannels [protected] |
Definition at line 183 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SavedSampleDistance [protected] |
Definition at line 184 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SavedScalarOpacityDistance [protected] |
Definition at line 185 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::ColorLookup[65536 *4] [protected] |
Definition at line 187 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::AlphaLookup[65536] [protected] |
Definition at line 188 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::TempArray1[3 *4096] [protected] |
Definition at line 189 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::TempArray2[4096] [protected] |
Definition at line 190 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::ColorTableSize [protected] |
Definition at line 191 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ColorTableScale [protected] |
Definition at line 192 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ColorTableOffset [protected] |
Definition at line 193 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::DiffuseLookup[65536 *4] [protected] |
Definition at line 195 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::SpecularLookup[65536 *4] [protected] |
Definition at line 196 of file vtkVolumeTextureMapper3D.h.
Definition at line 198 of file vtkVolumeTextureMapper3D.h.
Definition at line 199 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::RenderMethod [protected] |
Definition at line 201 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::PreferredRenderMethod [protected] |
Definition at line 202 of file vtkVolumeTextureMapper3D.h.