00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkPVLODVolume_h
00027 #define __vtkPVLODVolume_h
00028
00029 #include "vtkVolume.h"
00030
00031 class vtkLODProp3D;
00032 class vtkMapper;
00033
00034 class VTK_EXPORT vtkPVLODVolume : public vtkVolume
00035 {
00036 public:
00037 vtkTypeRevisionMacro(vtkPVLODVolume,vtkVolume);
00038 void PrintSelf(ostream& os, vtkIndent indent);
00039
00040 static vtkPVLODVolume *New();
00041
00043
00044 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
00045 virtual int RenderTranslucentGeometry(vtkViewport *viewport);
00047
00051 virtual void ReleaseGraphicsResources(vtkWindow *);
00052
00054 virtual void SetMapper(vtkAbstractVolumeMapper *);
00055
00057
00058 virtual void SetLODMapper(vtkAbstractVolumeMapper *);
00059 virtual void SetLODMapper(vtkMapper *);
00061
00063 virtual void SetProperty(vtkVolumeProperty *property);
00064
00066 virtual void ShallowCopy(vtkProp *prop);
00067
00069 virtual double *GetBounds();
00070
00072 virtual void SetAllocatedRenderTime(double t, vtkViewport *v);
00073
00074 protected:
00075 vtkPVLODVolume();
00076 ~vtkPVLODVolume();
00077
00078 vtkLODProp3D *LODProp;
00079 int HighLODId;
00080 int LowLODId;
00081
00082 int SelectLOD();
00083
00084 double MapperBounds[6];
00085 vtkTimeStamp BoundsMTime;
00086
00087 virtual void UpdateLODProperty();
00088
00089 private:
00090 vtkPVLODVolume(const vtkPVLODVolume&);
00091 void operator=(const vtkPVLODVolume&);
00092 };
00093
00094 #endif
00095
00096