Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkVolumeTextureMapper3D.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkVolumeTextureMapper3D.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00072 #ifndef __vtkVolumeTextureMapper3D_h
00073 #define __vtkVolumeTextureMapper3D_h
00074 
00075 #include "vtkVolumeMapper.h"
00076 
00077 class vtkImageData;
00078 class vtkColorTransferFunction;
00079 class vtkPiecewiseFunction;
00080 class vtkVolumeProperty;
00081 
00082 class VTK_VOLUMERENDERING_EXPORT vtkVolumeTextureMapper3D : public vtkVolumeMapper
00083 {
00084 public:
00085   vtkTypeRevisionMacro(vtkVolumeTextureMapper3D,vtkVolumeMapper);
00086   void PrintSelf(ostream& os, vtkIndent indent);
00087 
00088   static vtkVolumeTextureMapper3D *New();
00089 
00091 
00094   vtkSetMacro( SampleDistance, float );
00095   vtkGetMacro( SampleDistance, float );
00097 
00099 
00100   vtkGetVectorMacro( VolumeDimensions, int,   3 );
00102   
00104 
00105   vtkGetVectorMacro( VolumeSpacing,    float, 3 );
00107 
00112   virtual int IsRenderSupported( vtkVolumeProperty * ) {return 0;};
00113 
00115 
00116   vtkGetMacro( NumberOfPolygons, int );
00118   
00120 
00121   vtkGetMacro( ActualSampleDistance, float );
00123 
00124 //BTX
00125 
00128   virtual void Render(vtkRenderer *, vtkVolume *) {};  
00129   
00131 
00132   enum 
00133   {
00134     FRAGMENT_PROGRAM_METHOD=0,
00135     NVIDIA_METHOD=1,
00136     ATI_METHOD=2,
00137     NO_METHOD=3
00138   }; 
00140 //ETX
00141 
00143 
00145   vtkSetClampMacro( PreferredRenderMethod, int, 
00146                     vtkVolumeTextureMapper3D::FRAGMENT_PROGRAM_METHOD,
00147                     vtkVolumeTextureMapper3D::NVIDIA_METHOD );
00148   void SetPreferredMethodToFragmentProgram() 
00149     { this->SetPreferredRenderMethod( vtkVolumeTextureMapper3D::FRAGMENT_PROGRAM_METHOD ); }
00150   void SetPreferredMethodToNVidia() 
00151     { this->SetPreferredRenderMethod( vtkVolumeTextureMapper3D::NVIDIA_METHOD ); }
00153   
00154       
00155 
00156 protected:
00157   vtkVolumeTextureMapper3D();
00158   ~vtkVolumeTextureMapper3D();
00159 
00160   float                    *PolygonBuffer;
00161   float                    *IntersectionBuffer;
00162   int                       NumberOfPolygons;
00163   int                       BufferSize;
00164   
00165   unsigned char            *Volume1;
00166   unsigned char            *Volume2;
00167   unsigned char            *Volume3;
00168   int                       VolumeSize;
00169   int                       VolumeComponents;
00170   int                       VolumeDimensions[3];
00171   float                     VolumeSpacing[3];
00172   
00173   float                     SampleDistance;
00174   float                     ActualSampleDistance;
00175   
00176   vtkImageData             *SavedTextureInput;
00177   vtkImageData             *SavedParametersInput;
00178   
00179   vtkColorTransferFunction *SavedRGBFunction;
00180   vtkPiecewiseFunction     *SavedGrayFunction;
00181   vtkPiecewiseFunction     *SavedScalarOpacityFunction;
00182   vtkPiecewiseFunction     *SavedGradientOpacityFunction;
00183   int                       SavedColorChannels;
00184   float                     SavedSampleDistance;
00185   float                     SavedScalarOpacityDistance;
00186   
00187   unsigned char             ColorLookup[65536*4];
00188   unsigned char             AlphaLookup[65536];
00189   float                     TempArray1[3*4096];
00190   float                     TempArray2[4096];
00191   int                       ColorTableSize;
00192   float                     ColorTableScale;
00193   float                     ColorTableOffset; 
00194 
00195   unsigned char             DiffuseLookup[65536*4];
00196   unsigned char             SpecularLookup[65536*4];
00197   
00198   vtkTimeStamp              SavedTextureMTime;
00199   vtkTimeStamp              SavedParametersMTime;
00200 
00201   int                       RenderMethod;
00202   int                       PreferredRenderMethod;
00203   
00205   void   ComputePolygons( vtkRenderer *ren, vtkVolume *vol, double bounds[6] );
00206 
00208 
00210   int    UpdateVolumes( vtkVolume * );
00211   int    UpdateColorLookup( vtkVolume * );
00213 
00215 
00216   virtual int IsTextureSizeSupported( int [3] ) {return 0;};
00217   //ETX
00219   
00220 private:
00221   vtkVolumeTextureMapper3D(const vtkVolumeTextureMapper3D&);  // Not implemented.
00222   void operator=(const vtkVolumeTextureMapper3D&);  // Not implemented.
00223 };
00224 
00225 
00226 #endif
00227 
00228 
00229 
00230 
00231 
00232 

Generated on Mon Jan 21 23:07:38 2008 for VTK by  doxygen 1.4.3-20050530