VTK
vtkRenderer.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkRenderer.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 =========================================================================*/
40 #ifndef vtkRenderer_h
41 #define vtkRenderer_h
42 
43 #include "vtkRenderingCoreModule.h" // For export macro
44 #include "vtkViewport.h"
45 
46 #include "vtkVolumeCollection.h" // Needed for access in inline members
47 #include "vtkActorCollection.h" // Needed for access in inline members
48 
49 class vtkRenderWindow;
50 class vtkVolume;
51 class vtkCuller;
52 class vtkActor;
53 class vtkActor2D;
54 class vtkCamera;
55 class vtkLightCollection;
57 class vtkLight;
58 class vtkPainter;
61 class vtkTexture;
62 
64 {
65 public:
67  void PrintSelf(ostream& os, vtkIndent indent);
68 
72  static vtkRenderer *New();
73 
75 
78  void AddActor(vtkProp *p);
83 
85  void AddLight(vtkLight *);
86 
89 
92 
94  vtkLightCollection *GetLights();
95 
100 
102  void CreateLight(void);
103 
107  virtual vtkLight *MakeLight();
108 
110 
114  vtkGetMacro(TwoSidedLighting,int);
115  vtkSetMacro(TwoSidedLighting,int);
116  vtkBooleanMacro(TwoSidedLighting,int);
118 
120 
130  vtkSetMacro(LightFollowCamera,int);
131  vtkGetMacro(LightFollowCamera,int);
132  vtkBooleanMacro(LightFollowCamera,int);
134 
136 
142  vtkGetMacro(AutomaticLightCreation,int);
143  vtkSetMacro(AutomaticLightCreation,int);
144  vtkBooleanMacro(AutomaticLightCreation,int);
146 
151 
154 
157 
160 
165 
169  virtual vtkCamera *MakeCamera();
170 
172 
176  vtkSetMacro(Erase, int);
177  vtkGetMacro(Erase, int);
178  vtkBooleanMacro(Erase, int);
180 
182 
185  vtkSetMacro(Draw, int);
186  vtkGetMacro(Draw, int);
187  vtkBooleanMacro(Draw, int);
189 
194 
199 
202 
205 
207  vtkCullerCollection *GetCullers();
208 
210 
211  vtkSetVector3Macro(Ambient,double);
212  vtkGetVectorMacro(Ambient,double,3);
214 
216 
218  vtkSetMacro(AllocatedRenderTime,double);
219  virtual double GetAllocatedRenderTime();
221 
226  virtual double GetTimeFactor();
227 
232  virtual void Render();
233 
236  virtual void DeviceRender() =0;
237 
243 
245  virtual void Clear() {}
246 
249 
252 
255  void ComputeVisiblePropBounds( double bounds[6] );
256 
259 
263 
265 
268  void ResetCameraClippingRange( double bounds[6] );
269  void ResetCameraClippingRange( double xmin, double xmax,
270  double ymin, double ymax,
271  double zmin, double zmax);
273 
275 
279  vtkSetClampMacro(NearClippingPlaneTolerance,double,0,0.99);
280  vtkGetMacro(NearClippingPlaneTolerance,double);
282 
288  void ResetCamera();
289 
297  void ResetCamera(double bounds[6]);
298 
300 
301  void ResetCamera(double xmin, double xmax, double ymin, double ymax,
302  double zmin, double zmax);
304 
306 
310  vtkRenderWindow *GetRenderWindow() {return this->RenderWindow;};
313 
315 
318  vtkSetMacro(BackingStore,int);
319  vtkGetMacro(BackingStore,int);
320  vtkBooleanMacro(BackingStore,int);
322 
324 
327  vtkSetMacro(Interactive,int);
328  vtkGetMacro(Interactive,int);
329  vtkBooleanMacro(Interactive,int);
331 
333 
341  virtual void SetLayer(int layer);
342  vtkGetMacro(Layer, int);
344 
346 
353  vtkGetMacro(PreserveColorBuffer, int);
354  vtkSetMacro(PreserveColorBuffer, int);
355  vtkBooleanMacro(PreserveColorBuffer, int);
357 
359 
362  vtkSetMacro(PreserveDepthBuffer, int);
363  vtkGetMacro(PreserveDepthBuffer, int);
364  vtkBooleanMacro(PreserveDepthBuffer, int);
366 
369  int Transparent();
370 
372  void WorldToView();
373 
375 
376  void ViewToWorld();
377  virtual void ViewToWorld(double &wx, double &wy, double &wz);
379 
381  virtual void WorldToView(double &wx, double &wy, double &wz);
382 
385  double GetZ (int x, int y);
386 
388  unsigned long GetMTime();
389 
391 
392  vtkGetMacro( LastRenderTimeInSeconds, double );
394 
396 
400  vtkGetMacro( NumberOfPropsRendered, int );
402 
404 
409  vtkAssemblyPath* PickProp(double selectionX, double selectionY)
410  {
411  return this->PickProp(selectionX, selectionY, selectionX, selectionY);
412  }
413  vtkAssemblyPath* PickProp(double selectionX1, double selectionY1,
414  double selectionX2, double selectionY2);
416 
420  virtual void StereoMidpoint() { return; };
421 
427 
429 
433  { return (this->ActiveCamera != NULL); }
435 
436 
438 
445  vtkSetMacro(UseDepthPeeling,int);
446  vtkGetMacro(UseDepthPeeling,int);
447  vtkBooleanMacro(UseDepthPeeling,int);
449 
451 
458  vtkSetClampMacro(OcclusionRatio,double,0.0,0.5);
459  vtkGetMacro(OcclusionRatio,double);
461 
463 
466  vtkSetMacro(MaximumNumberOfPeels,int);
467  vtkGetMacro(MaximumNumberOfPeels,int);
469 
471 
473  vtkGetMacro(LastRenderingUsedDepthPeeling,int);
475 
477 
484 
486 
491 
493 
496  vtkGetObjectMacro(BackgroundTexture, vtkTexture);
498 
500 
502  vtkSetMacro(TexturedBackground,bool);
503  vtkGetMacro(TexturedBackground,bool);
504  vtkBooleanMacro(TexturedBackground,bool);
506 
507  // method to release graphics resources in any derived renderers.
509 
510 //BTX
511 protected:
514 
515  // internal method for doing a render for picking purposes
516  virtual void PickRender(vtkPropCollection *props);
517  virtual void PickGeometry();
518 
519  // internal method to expand bounding box to consider model transform
520  // matrix or model view transform matrix based on whether or not deering
521  // frustum is used.
522  virtual void ExpandBounds(double bounds[6], vtkMatrix4x4 *matrix);
523 
526 
529 
532 
533  double Ambient[3];
536  double TimeFactor;
540  unsigned char *BackingImage;
541  int BackingStoreSize[2];
543 
545 
547 
548  // Allocate the time for each prop
549  void AllocateTime();
550 
551  // Internal variables indicating the number of props
552  // that have been or will be rendered in each category.
554 
555  // A temporary list of props used for culling, and traversal
556  // of all props when rendering
559 
560  // A temporary list used for picking
563 
564  // Indicates if the renderer should receive events from an interactor.
565  // Typically only used in conjunction with transparent renderers.
567 
568  // Shows what layer this renderer belongs to. Only of interested when
569  // there are layered renderers.
570  int Layer;
573 
574  // Holds the result of ComputeVisiblePropBounds so that it is visible from
575  // wrapped languages
576  double ComputedVisiblePropBounds[6];
577 
584 
589  int Erase;
590 
594  int Draw;
595 
599 
600  // Friend class to allow render passes to access functions.
601  friend class vtkRenderPass;
602 
606  virtual int UpdateGeometry();
607 
613 
616  virtual int UpdateCamera(void);
617 
621  virtual int UpdateLightGeometry(void);
622 
625  virtual int UpdateLights(void) {return 0;}
626 
630 
635 
644 
649 
653 
654  // HARDWARE SELECTION ----------------------------------------
655  friend class vtkHardwareSelector;
656 
658 
660  { this->Selector = selector; this->Modified(); }
662 
663  // End Ivars for visible cell selecting.
665 
666  //---------------------------------------------------------------
667  friend class vtkRendererDelegate;
669 
672 
673 private:
674  vtkRenderer(const vtkRenderer&); // Not implemented.
675  void operator=(const vtkRenderer&); // Not implemented.
676 //ETX
677 };
678 
680  return this->Lights;
681 }
682 
685 
686 #endif
vtkRenderer::UpdateCamera
virtual int UpdateCamera(void)
vtkRenderer::WorldToView
virtual void WorldToView(double &wx, double &wy, double &wz)
vtkVolumeCollection
a list of volumes
Definition: vtkVolumeCollection.h:35
vtkRenderer::SetBackgroundTexture
virtual void SetBackgroundTexture(vtkTexture *)
vtkRenderer::Render
virtual void Render()
vtkRenderer::PickGeometry
virtual void PickGeometry()
vtkRenderer::~vtkRenderer
~vtkRenderer()
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkRenderer::WorldToView
void WorldToView()
vtkRenderer::CaptureGL2PSSpecialProp
int CaptureGL2PSSpecialProp(vtkProp *)
vtkRenderer::SetLightCollection
void SetLightCollection(vtkLightCollection *lights)
vtkLight
a virtual light for 3D rendering
Definition: vtkLight.h:61
vtkRenderer::AddActor
void AddActor(vtkProp *p)
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
vtkRenderer::Clear
virtual void Clear()
Definition: vtkRenderer.h:245
vtkRenderer::SetDelegate
void SetDelegate(vtkRendererDelegate *d)
vtkSetVector3Macro
#define vtkSetVector3Macro(name, type)
Definition: vtkSetGet.h:287
vtkRenderer::IsActiveCameraCreated
int IsActiveCameraCreated()
Definition: vtkRenderer.h:432
vtkRenderer::UpdateGeometry
virtual int UpdateGeometry()
vtkRenderer::RemoveVolume
void RemoveVolume(vtkProp *p)
vtkRenderer::AddVolume
void AddVolume(vtkProp *p)
vtkRenderer::UpdateLights
virtual int UpdateLights(void)
Definition: vtkRenderer.h:625
vtkRenderer::ComputeVisiblePropBounds
void ComputeVisiblePropBounds(double bounds[6])
vtkRenderer::PreserveColorBuffer
int PreserveColorBuffer
Definition: vtkRenderer.h:571
vtkRenderer::MakeCamera
virtual vtkCamera * MakeCamera()
vtkRenderer::GetAllocatedRenderTime
virtual double GetAllocatedRenderTime()
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkLightCollection
a list of lights
Definition: vtkLightCollection.h:38
vtkRenderer::AllocatedRenderTime
double AllocatedRenderTime
Definition: vtkRenderer.h:535
vtkRenderer::ViewToWorld
virtual void ViewToWorld(double &wx, double &wy, double &wz)
vtkRenderer::UseDepthPeeling
int UseDepthPeeling
Definition: vtkRenderer.h:634
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkObject::Modified
virtual void Modified()
vtkRenderer::ReleaseGraphicsResources
virtual void ReleaseGraphicsResources(vtkWindow *)
Definition: vtkRenderer.h:508
vtkRenderer::RenderTime
vtkTimeStamp RenderTime
Definition: vtkRenderer.h:542
vtkRenderer::ResetCamera
void ResetCamera(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
vtkRenderer::OcclusionRatio
double OcclusionRatio
Definition: vtkRenderer.h:643
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkRenderer::VisibleVolumeCount
int VisibleVolumeCount()
vtkRenderer::GetActors
vtkActorCollection * GetActors()
vtkViewport::PickProp
virtual vtkAssemblyPath * PickProp(double selectionX, double selectionY)=0
vtkRenderer::ResetCameraClippingRange
void ResetCameraClippingRange()
vtkGetVectorMacro
#define vtkGetVectorMacro(name, type, count)
Definition: vtkSetGet.h:424
vtkViewport.h
vtkAssemblyPath
a list of nodes that form an assembly path
Definition: vtkAssemblyPath.h:41
vtkRenderer::ViewToWorld
void ViewToWorld()
vtkRenderer::Transparent
int Transparent()
vtkRenderer::BackingImage
unsigned char * BackingImage
Definition: vtkRenderer.h:540
vtkRenderer::StereoMidpoint
virtual void StereoMidpoint()
Definition: vtkRenderer.h:420
vtkRenderer::RenderWindow
vtkRenderWindow * RenderWindow
Definition: vtkRenderer.h:534
vtkRenderer::PickRender
virtual void PickRender(vtkPropCollection *props)
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
vtkRenderer::AllocateTime
void AllocateTime()
vtkRenderer::Layer
int Layer
Definition: vtkRenderer.h:570
vtkRenderer::ResetCamera
void ResetCamera(double bounds[6])
vtkRenderer::ResetCameraClippingRange
void ResetCameraClippingRange(double bounds[6])
vtkRenderer::vtkRenderer
vtkRenderer()
vtkRenderer::SetSelector
void SetSelector(vtkHardwareSelector *selector)
Definition: vtkRenderer.h:659
vtkRenderer::GetActiveCamera
vtkCamera * GetActiveCamera()
vtkRenderer::SetGL2PSSpecialPropCollection
void SetGL2PSSpecialPropCollection(vtkPropCollection *)
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkRendererDelegate
Render the props of a vtkRenderer.
Definition: vtkRendererDelegate.h:37
vtkTexture
handles properties associated with a texture map
Definition: vtkTexture.h:70
vtkRenderer::GetVolumes
vtkVolumeCollection * GetVolumes()
vtkActorCollection.h
vtkRenderer::DeviceRenderTranslucentPolygonalGeometry
virtual void DeviceRenderTranslucentPolygonalGeometry()
vtkRenderer::LastRenderTimeInSeconds
double LastRenderTimeInSeconds
Definition: vtkRenderer.h:544
vtkRenderer::ActiveCamera
vtkCamera * ActiveCamera
Definition: vtkRenderer.h:524
vtkVolumeCollection.h
vtkRenderer::Volumes
vtkVolumeCollection * Volumes
Definition: vtkRenderer.h:531
vtkRenderer::Cullers
vtkCullerCollection * Cullers
Definition: vtkRenderer.h:528
vtkHardwareSelector
manager for OpenGL-based selection.
Definition: vtkHardwareSelector.h:76
vtkRenderer::GetLights
vtkLightCollection * GetLights()
Definition: vtkRenderer.h:679
vtkRenderer::Delegate
vtkRendererDelegate * Delegate
Definition: vtkRenderer.h:668
vtkRenderer::PropArrayCount
int PropArrayCount
Definition: vtkRenderer.h:558
vtkRenderer::TimeFactor
double TimeFactor
Definition: vtkRenderer.h:536
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
vtkCuller
a superclass for prop cullers
Definition: vtkCuller.h:40
vtkRenderer::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:39
vtkRenderingCoreModule.h
vtkRenderer::CreateLight
void CreateLight(void)
vtkRenderer::PathArrayCount
int PathArrayCount
Definition: vtkRenderer.h:562
vtkRenderer::Erase
int Erase
Definition: vtkRenderer.h:589
vtkRenderer::GetActiveCameraAndResetIfCreated
vtkCamera * GetActiveCameraAndResetIfCreated()
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:49
vtkRenderer::PickProp
vtkAssemblyPath * PickProp(double selectionX1, double selectionY1, double selectionX2, double selectionY2)
vtkPainter
Abstract class for drawing poly data.
Definition: vtkPainter.h:64
vtkRenderer::PropArray
vtkProp ** PropArray
Definition: vtkRenderer.h:557
vtkCullerCollection
a list of Cullers
Definition: vtkCullerCollection.h:34
vtkRenderer::UpdateTranslucentPolygonalGeometry
virtual int UpdateTranslucentPolygonalGeometry()
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkRenderer::GetZ
double GetZ(int x, int y)
vtkRenderer::DeviceRender
virtual void DeviceRender()=0
vtkgl::zmax
GLclampd zmax
Definition: vtkgl.h:17479
vtkViewport
abstract specification for Viewports
Definition: vtkViewport.h:47
vtkRenderer::Actors
vtkActorCollection * Actors
Definition: vtkRenderer.h:530
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkRenderer::ComputeVisiblePropBounds
double * ComputeVisiblePropBounds()
vtkRenderer::Interactive
int Interactive
Definition: vtkRenderer.h:566
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkRenderer::LightFollowCamera
int LightFollowCamera
Definition: vtkRenderer.h:546
vtkProp
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:50
vtkRenderer::AutomaticLightCreation
int AutomaticLightCreation
Definition: vtkRenderer.h:538
vtkRenderer::RemoveLight
void RemoveLight(vtkLight *)
vtkRenderer::LastRenderingUsedDepthPeeling
int LastRenderingUsedDepthPeeling
Definition: vtkRenderer.h:652
vtkRenderer::GL2PSSpecialPropCollection
vtkPropCollection * GL2PSSpecialPropCollection
Definition: vtkRenderer.h:598
vtkActor2D
a actor that draws 2D data
Definition: vtkActor2D.h:45
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkRenderer::SetRenderWindow
void SetRenderWindow(vtkRenderWindow *)
vtkRenderer::Selector
vtkHardwareSelector * Selector
Definition: vtkRenderer.h:664
vtkRenderer::Lights
vtkLightCollection * Lights
Definition: vtkRenderer.h:527
vtkRenderer::NearClippingPlaneTolerance
double NearClippingPlaneTolerance
Definition: vtkRenderer.h:583
vtkRenderer::RemoveCuller
void RemoveCuller(vtkCuller *)
vtkRenderer::BackgroundTexture
vtkTexture * BackgroundTexture
Definition: vtkRenderer.h:671
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkRenderer::RemoveAllLights
void RemoveAllLights()
vtkRenderer::TwoSidedLighting
int TwoSidedLighting
Definition: vtkRenderer.h:537
vtkgl::matrix
GLuint GLenum matrix
Definition: vtkgl.h:16451
vtkRenderer::Draw
int Draw
Definition: vtkRenderer.h:594
vtkRenderer::TexturedBackground
bool TexturedBackground
Definition: vtkRenderer.h:670
vtkRenderer::GetMTime
unsigned long GetMTime()
vtkRenderer::AddLight
void AddLight(vtkLight *)
vtkRenderer::PickProp
vtkAssemblyPath * PickProp(double selectionX, double selectionY)
Definition: vtkRenderer.h:409
vtkActorCollection
a list of actors
Definition: vtkActorCollection.h:36
vtkRenderer::SetActiveCamera
void SetActiveCamera(vtkCamera *)
vtkRenderer::PreserveDepthBuffer
int PreserveDepthBuffer
Definition: vtkRenderer.h:572
vtkRenderer::MaximumNumberOfPeels
int MaximumNumberOfPeels
Definition: vtkRenderer.h:648
vtkgl::p
GLfloat GLfloat p
Definition: vtkgl.h:15717
vtkRenderer::VisibleActorCount
int VisibleActorCount()
vtkgl::layer
GLenum GLuint GLint GLint layer
Definition: vtkgl.h:13516
vtkRenderer::PathArray
vtkAssemblyPath ** PathArray
Definition: vtkRenderer.h:561
vtkRenderer::GetTimeFactor
virtual double GetTimeFactor()
vtkRenderer::ResetCameraClippingRange
void ResetCameraClippingRange(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
vtkRenderer::ExpandBounds
virtual void ExpandBounds(double bounds[6], vtkMatrix4x4 *matrix)
VTKRENDERINGCORE_EXPORT
#define VTKRENDERINGCORE_EXPORT
Definition: vtkRenderingCoreModule.h:15
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:89
vtkRenderer::MakeLight
virtual vtkLight * MakeLight()
vtkRenderer::GetVTKWindow
virtual vtkWindow * GetVTKWindow()
vtkRenderer::RemoveActor
void RemoveActor(vtkProp *p)
vtkRenderer::UpdateLightGeometry
virtual int UpdateLightGeometry(void)
vtkRenderer::GetRenderWindow
vtkRenderWindow * GetRenderWindow()
Definition: vtkRenderer.h:310
vtkRenderer::New
static vtkRenderer * New()
vtkRenderer::CreatedLight
vtkLight * CreatedLight
Definition: vtkRenderer.h:525
vtkRenderer::AddCuller
void AddCuller(vtkCuller *)
vtkPropCollection
a list of Props
Definition: vtkPropCollection.h:38
vtkRenderer::GetTiledAspectRatio
double GetTiledAspectRatio()
vtkRenderer::GetCullers
vtkCullerCollection * GetCullers()
Definition: vtkRenderer.h:684
vtkRenderer::ResetCamera
void ResetCamera()
vtkRenderer::NumberOfPropsRendered
int NumberOfPropsRendered
Definition: vtkRenderer.h:553
vtkRenderer::UpdateLightsGeometryToFollowCamera
virtual int UpdateLightsGeometryToFollowCamera(void)
vtkRenderer::BackingStore
int BackingStore
Definition: vtkRenderer.h:539
vtkRenderer::SetLayer
virtual void SetLayer(int layer)
vtkRenderPass
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:58