VTK
vtkSynchronizedRenderers.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: $RCSfile$
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 =========================================================================*/
32 #ifndef vtkSynchronizedRenderers_h
33 #define vtkSynchronizedRenderers_h
34 
35 #include "vtkRenderingParallelModule.h" // For export macro
36 #include "vtkObject.h"
37 #include "vtkUnsignedCharArray.h" // needed for vtkUnsignedCharArray.
38 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
39 
40 class vtkRenderer;
43 class vtkOpenGLRenderer;
44 
46 {
47 public:
50  void PrintSelf(ostream& os, vtkIndent indent);
51 
53 
57  virtual void SetRenderer(vtkRenderer*);
60 
62 
67 
69 
71  vtkSetMacro(ParallelRendering, bool);
72  vtkGetMacro(ParallelRendering, bool);
73  vtkBooleanMacro(ParallelRendering, bool);
75 
77 
78  vtkSetClampMacro(ImageReductionFactor, int, 1, 50);
79  vtkGetMacro(ImageReductionFactor, int);
81 
83 
86  vtkSetMacro(WriteBackImages, bool);
87  vtkGetMacro(WriteBackImages, bool);
88  vtkBooleanMacro(WriteBackImages, bool);
90 
92 
96  vtkSetMacro(RootProcessId, int);
97  vtkGetMacro(RootProcessId, int);
99 
105  void CollectiveExpandForVisiblePropBounds(double bounds[6]);
106 
108 
113 
115 
121  vtkSetMacro(AutomaticEventHandling, bool);
122  vtkGetMacro(AutomaticEventHandling, bool);
123  vtkBooleanMacro(AutomaticEventHandling, bool);
125 
126 //BTX
127  enum
128  {
129  SYNC_RENDERER_TAG = 15101,
130  RESET_CAMERA_TAG = 15102,
131  COMPUTE_BOUNDS_TAG = 15103
132  };
133 
137  {
138  public:
140  {
141  this->Valid = false;
142  this->Size[0] = this->Size[1] = 0;
144  }
145 
146  void Resize(int dx, int dy, int numcomps)
147  {
148  this->Valid = false;
149  this->Allocate(dx, dy, numcomps);
150  }
151 
153  void Initialize(int dx, int dy, vtkUnsignedCharArray* data);
154 
155  void MarkValid() { this->Valid = true; }
156  void MarkInValid() { this->Valid = false; }
157 
158  bool IsValid() { return this->Valid; }
159  int GetWidth() { return this->Size[0];}
160  int GetHeight() { return this->Size[1];}
162  { return this->Data; }
163 
164  // Pushes the image to the viewport.
166 
167  // This is a raw version of PushToViewport() that assumes that the
168  // glViewport() has already been setup externally.
169  // the argument is optional for backwards compat with old OpenGL
170  bool PushToFrameBuffer(vtkRenderer *ren = NULL);
171 
172  // Captures the image from the viewport.
173  // This doesn't trigger a render, just captures what's currently there in
174  // the active buffer.
176 
177  // Save the image as a png. Useful for debugging.
178  void SaveAsPNG(const char* filename);
179 
180  private:
181  bool Valid;
182  int Size[2];
184 
185  void Allocate(int dx, int dy, int numcomps);
186  };
187 //ETX
188 protected:
191 
193  {
195  int Draw;
197  double Viewport[4];
198  double CameraPosition[3];
199  double CameraFocalPoint[3];
200  double CameraViewUp[3];
201  double CameraWindowCenter[2];
202  double CameraClippingRange[2];
205  double EyeTransformMatrix[16];
206  double ModelTransformMatrix[16];
207 
208  // Save/restore the struct to/from a stream.
211 
214  };
215 
216  // These methods are called on all processes as a consequence of corresponding
217  // events being called on the renderer.
218  virtual void HandleStartRender();
219  virtual void HandleEndRender();
220  virtual void HandleAbortRender() {}
221 
222  virtual void MasterStartRender();
223  virtual void SlaveStartRender();
224 
225  virtual void MasterEndRender();
226  virtual void SlaveEndRender();
227 
230 
237 
241  virtual void PushImageToScreen();
242 
246 
252 
253 private:
254  vtkSynchronizedRenderers(const vtkSynchronizedRenderers&); // Not implemented
255  void operator=(const vtkSynchronizedRenderers&); // Not implemented
256 
257  class vtkObserver;
258  vtkObserver* Observer;
259  friend class vtkObserver;
260 
261  double LastViewport[4];
262 };
263 
264 #endif
265 
vtkSynchronizedRenderers::CaptureDelegate
vtkSynchronizedRenderers * CaptureDelegate
Definition: vtkSynchronizedRenderers.h:243
vtkSynchronizedRenderers::CaptureRenderedImage
virtual vtkRawImage & CaptureRenderedImage()
vtkgl::data
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: vtkgl.h:11339
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkSynchronizedRenderers::RendererInfo::CameraParallelProjection
int CameraParallelProjection
Definition: vtkSynchronizedRenderers.h:196
vtkSynchronizedRenderers::RendererInfo::Restore
bool Restore(vtkMultiProcessStream &stream)
vtkSynchronizedRenderers::vtkRawImage::SaveAsPNG
void SaveAsPNG(const char *filename)
vtkSynchronizedRenderers::WriteBackImages
bool WriteBackImages
Definition: vtkSynchronizedRenderers.h:249
vtkMultiProcessStream
stream used to pass data across processes using vtkMultiProcessController.
Definition: vtkMultiProcessStream.h:40
vtkSynchronizedRenderers::vtkRawImage::PushToViewport
bool PushToViewport(vtkRenderer *)
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:49
vtkSynchronizedRenderers::RootProcessId
int RootProcessId
Definition: vtkSynchronizedRenderers.h:250
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkgl::stream
GLuint GLuint stream
Definition: vtkgl.h:14154
vtkSmartPointer< vtkUnsignedCharArray >
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkSynchronizedRenderers::CollectiveExpandForVisiblePropBounds
void CollectiveExpandForVisiblePropBounds(double bounds[6])
vtkRenderingParallelModule.h
vtkSynchronizedRenderers::HandleAbortRender
virtual void HandleAbortRender()
Definition: vtkSynchronizedRenderers.h:220
vtkSynchronizedRenderers::RendererInfo::Save
void Save(vtkMultiProcessStream &stream)
vtkSynchronizedRenderers::AutomaticEventHandling
bool AutomaticEventHandling
Definition: vtkSynchronizedRenderers.h:251
vtkSynchronizedRenderers::ParallelController
vtkMultiProcessController * ParallelController
Definition: vtkSynchronizedRenderers.h:228
vtkSynchronizedRenderers::SetCaptureDelegate
virtual void SetCaptureDelegate(vtkSynchronizedRenderers *)
vtkSynchronizedRenderers::vtkSynchronizedRenderers
vtkSynchronizedRenderers()
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkSynchronizedRenderers::GetRenderer
virtual vtkRenderer * GetRenderer()
vtkSynchronizedRenderers::vtkRawImage::GetWidth
int GetWidth()
Definition: vtkSynchronizedRenderers.h:159
vtkSynchronizedRenderers::SetParallelController
virtual void SetParallelController(vtkMultiProcessController *)
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:85
vtkSynchronizedRenderers::RendererInfo::CameraParallelScale
double CameraParallelScale
Definition: vtkSynchronizedRenderers.h:204
vtkSynchronizedRenderers::vtkRawImage::Resize
void Resize(int dx, int dy, int numcomps)
Definition: vtkSynchronizedRenderers.h:146
vtkSynchronizedRenderers::HandleEndRender
virtual void HandleEndRender()
VTKRENDERINGPARALLEL_EXPORT
#define VTKRENDERINGPARALLEL_EXPORT
Definition: vtkRenderingParallelModule.h:15
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkSynchronizedRenderers::HandleStartRender
virtual void HandleStartRender()
vtkSynchronizedRenderers::PushImageToScreen
virtual void PushImageToScreen()
vtkSynchronizedRenderers::vtkRawImage::MarkInValid
void MarkInValid()
Definition: vtkSynchronizedRenderers.h:156
vtkSynchronizedRenderers::RendererInfo::CopyTo
void CopyTo(vtkRenderer *)
vtkSynchronizedRenderers::ImageReductionFactor
int ImageReductionFactor
Definition: vtkSynchronizedRenderers.h:248
vtkSmartPointer.h
vtkOpenGLRenderer
OpenGL renderer.
Definition: vtkOpenGLRenderer.h:36
vtkUnsignedCharArray.h
vtkSmartPointer::New
static vtkSmartPointer< T > New()
Definition: vtkSmartPointer.h:126
vtkSynchronizedRenderers::vtkRawImage::vtkRawImage
vtkRawImage()
Definition: vtkSynchronizedRenderers.h:139
vtkSynchronizedRenderers::RendererInfo::CopyFrom
void CopyFrom(vtkRenderer *)
vtkSynchronizedRenderers::vtkRawImage::Capture
bool Capture(vtkRenderer *)
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkSynchronizedRenderers::SlaveEndRender
virtual void SlaveEndRender()
vtkSynchronizedRenderers::SlaveStartRender
virtual void SlaveStartRender()
vtkObject.h
vtkSynchronizedRenderers::vtkRawImage::GetHeight
int GetHeight()
Definition: vtkSynchronizedRenderers.h:160
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkSynchronizedRenderers::vtkRawImage::PushToFrameBuffer
bool PushToFrameBuffer(vtkRenderer *ren=NULL)
vtkSynchronizedRenderers::RendererInfo::Draw
int Draw
Definition: vtkSynchronizedRenderers.h:195
vtkSynchronizedRenderers::RendererInfo::ImageReductionFactor
int ImageReductionFactor
Definition: vtkSynchronizedRenderers.h:194
vtkSynchronizedRenderers::RendererInfo
Definition: vtkSynchronizedRenderers.h:193
vtkSynchronizedRenderers::~vtkSynchronizedRenderers
~vtkSynchronizedRenderers()
vtkSynchronizedRenderers::vtkRawImage
vtkRawImage can be used to make it easier to deal with images for compositing/communicating over clie...
Definition: vtkSynchronizedRenderers.h:137
vtkSynchronizedRenderers::vtkRawImage::GetRawPtr
vtkUnsignedCharArray * GetRawPtr()
Definition: vtkSynchronizedRenderers.h:161
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkSynchronizedRenderers::Renderer
vtkOpenGLRenderer * Renderer
Definition: vtkSynchronizedRenderers.h:229
vtkSynchronizedRenderers
synchronizes renderers across processes.
Definition: vtkSynchronizedRenderers.h:46
vtkSynchronizedRenderers::vtkRawImage::MarkValid
void MarkValid()
Definition: vtkSynchronizedRenderers.h:155
vtkSynchronizedRenderers::RendererInfo::CameraViewAngle
double CameraViewAngle
Definition: vtkSynchronizedRenderers.h:203
vtkSynchronizedRenderers::ParallelRendering
bool ParallelRendering
Definition: vtkSynchronizedRenderers.h:247
vtkSynchronizedRenderers::New
static vtkSynchronizedRenderers * New()
vtkSynchronizedRenderers::MasterStartRender
virtual void MasterStartRender()
vtkSynchronizedRenderers::MasterEndRender
virtual void MasterEndRender()
vtkSynchronizedRenderers::vtkRawImage::Initialize
void Initialize(int dx, int dy, vtkUnsignedCharArray *data)
vtkSynchronizedRenderers::SetRenderer
virtual void SetRenderer(vtkRenderer *)
vtkSynchronizedRenderers::ReducedImage
vtkRawImage ReducedImage
Definition: vtkSynchronizedRenderers.h:244
vtkSynchronizedRenderers::FullImage
vtkRawImage FullImage
Definition: vtkSynchronizedRenderers.h:245
vtkSynchronizedRenderers::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkSynchronizedRenderers::vtkRawImage::IsValid
bool IsValid()
Definition: vtkSynchronizedRenderers.h:158