VTK
vtkOpenGLRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLRenderWindow.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 =========================================================================*/
25 #ifndef vtkOpenGLRenderWindow_h
26 #define vtkOpenGLRenderWindow_h
27 
28 #include "vtkRenderingOpenGLModule.h" // For export macro
29 #include "vtkRenderWindow.h"
30 #include "vtkOpenGL.h" // Needed for GLuint.
31 
32 class vtkIdList;
36 class vtkStdString;
37 
38 class VTKRENDERINGOPENGL_EXPORT vtkOpenGLRenderWindow : public vtkRenderWindow
39 {
40 public:
42  void PrintSelf(ostream& os, vtkIndent indent);
43 
45 
48  static void SetGlobalMaximumNumberOfMultiSamples(int val);
49  static int GetGlobalMaximumNumberOfMultiSamples();
51 
55  virtual const char *GetRenderingBackend();
56 
60  virtual void StereoUpdate();
61 
63 
66  virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
67  virtual int GetPixelData(int x,int y,int x2,int y2, int front,
69  virtual int SetPixelData(int x,int y,int x2,int y2,unsigned char *data,
70  int front);
71  virtual int SetPixelData(int x,int y,int x2,int y2,
72  vtkUnsignedCharArray *data, int front);
74 
76 
79  virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
80  virtual int GetRGBAPixelData(int x,int y,int x2,int y2, int front,
82  virtual int SetRGBAPixelData(int x,int y,int x2,int y2, float *data,
83  int front, int blend=0);
84  virtual int SetRGBAPixelData(int x,int y,int x2,int y2, vtkFloatArray *data,
85  int front, int blend=0);
86  virtual void ReleaseRGBAPixelData(float *data);
87  virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,
88  int front);
89  virtual int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
91  virtual int SetRGBACharPixelData(int x, int y, int x2, int y2,
92  unsigned char *data, int front,
93  int blend=0);
94  virtual int SetRGBACharPixelData(int x,int y,int x2,int y2,
95  vtkUnsignedCharArray *data, int front,
96  int blend=0);
98 
100 
103  virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
104  virtual int GetZbufferData( int x1, int y1, int x2, int y2, float* z );
105  virtual int GetZbufferData( int x1, int y1, int x2, int y2,
106  vtkFloatArray* z );
107  virtual int SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
108  virtual int SetZbufferData( int x1, int y1, int x2, int y2,
109  vtkFloatArray *buffer );
111 
115  void RegisterTextureResource (GLuint id);
116 
120  int GetDepthBufferSize();
121 
126  int GetColorBufferSizes(int *rgba);
127 
129 
132  virtual void SetSize(int a[2]);
133  virtual void SetSize(int,int);
135 
139  virtual void OpenGLInit();
140 
141  // Initialize the state of OpenGL that VTK wants for this window
142  virtual void OpenGLInitState();
143 
144  // Initialize VTK for rendering in a new OpenGL context
145  virtual void OpenGLInitContext();
146 
154  unsigned int GetBackLeftBuffer();
155 
163  unsigned int GetBackRightBuffer();
164 
172  unsigned int GetFrontLeftBuffer();
173 
181  unsigned int GetFrontRightBuffer();
182 
190  unsigned int GetBackBuffer();
191 
199  unsigned int GetFrontBuffer();
200 
204  virtual vtkMTimeType GetContextCreationTime();
205 
210  vtkOpenGLExtensionManager* GetExtensionManager();
211 
216  vtkOpenGLHardwareSupport* GetHardwareSupport();
217 
222  vtkTextureUnitManager *GetTextureUnitManager();
223 
228  virtual void WaitForCompletion();
229 
231 
239  virtual int SetUseOffScreenBuffers(bool offScreen);
240  virtual bool GetUseOffScreenBuffers();
242 
243 protected:
246 
249 
250  int GetPixelData(int x, int y, int x2, int y2, int front, unsigned char* data);
251  int GetRGBAPixelData(int x, int y, int x2, int y2, int front, float* data);
252  int GetRGBACharPixelData(int x, int y, int x2, int y2, int front,
253  unsigned char* data);
254 
264  int CreateHardwareOffScreenWindow(int width, int height);
265 
266  int CreateHardwareOffScreenBuffers(int width, int height, bool bind = false);
267  void BindHardwareOffScreenBuffers();
268 
274  void DestroyHardwareOffScreenWindow();
275 
276  void UnbindHardwareOffScreenBuffers();
277  void DestroyHardwareOffScreenBuffers();
278 
283 
285 
289  unsigned int TextureObjects[4]; // really GLuint
290  unsigned int FrameBufferObject; // really GLuint
291  unsigned int DepthRenderBufferObject; // really GLuint
292  int HardwareBufferSize[2];
295 
299  virtual void CreateAWindow() = 0;
300 
304  virtual void DestroyWindow() = 0;
305 
309  void SetTextureUnitManager(vtkTextureUnitManager *textureUnitManager);
310 
311  unsigned int BackLeftBuffer;
312  unsigned int BackRightBuffer;
313  unsigned int FrontLeftBuffer;
314  unsigned int FrontRightBuffer;
315  unsigned int FrontBuffer;
316  unsigned int BackBuffer;
317 
322 
324 
326 
327 private:
328  vtkOpenGLRenderWindow(const vtkOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
329  void operator=(const vtkOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
330 
331  void SetExtensionManager(vtkOpenGLExtensionManager*);
332  void SetHardwareSupport(vtkOpenGLHardwareSupport * renderWindow);
333 
334  vtkOpenGLExtensionManager* ExtensionManager;
335  vtkOpenGLHardwareSupport* HardwareSupport;
336 };
337 
338 #endif
vtkWindow::SetSize
virtual void SetSize(int, int)
vtkRenderWindow::SetRGBACharPixelData
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0)=0
vtkOpenGLRenderWindow::NumberOfFrameBuffers
int NumberOfFrameBuffers
Variables used by the framebuffer-based offscreen method.
Definition: vtkOpenGLRenderWindow.h:288
vtkRenderWindow::GetUseOffScreenBuffers
virtual bool GetUseOffScreenBuffers()
Definition: vtkRenderWindow.h:724
vtkRenderWindow::GetColorBufferSizes
virtual int GetColorBufferSizes(int *rgba)=0
Get the size of the color buffer.
vtkRenderWindow::GetDepthBufferSize
virtual int GetDepthBufferSize()=0
This method should be defined by the subclass.
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:41
vtkX3D::data
@ data
Definition: vtkX3D.h:315
vtkRenderWindow::SetRGBAPixelData
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *, int front, int blend=0)=0
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkRenderWindow::SetUseOffScreenBuffers
virtual int SetUseOffScreenBuffers(bool)
Create and bind offscreen rendering buffers without destroying the current OpenGL context.
Definition: vtkRenderWindow.h:723
vtkOpenGLRenderWindow::TextureUnitManager
vtkTextureUnitManager * TextureUnitManager
Definition: vtkOpenGLRenderWindow.h:325
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:41
vtkRenderWindow.h
vtkOpenGLRenderWindow::OldMonitorSetting
long OldMonitorSetting
Definition: vtkOpenGLRenderWindow.h:247
vtkOpenGLRenderWindow::FrameBufferObject
unsigned int FrameBufferObject
Definition: vtkOpenGLRenderWindow.h:290
vtkOpenGLRenderWindow::OffScreenUseFrameBuffer
int OffScreenUseFrameBuffer
Flag telling if a framebuffer-based offscreen is currently in use.
Definition: vtkOpenGLRenderWindow.h:282
vtkOpenGLRenderWindow::FrontRightBuffer
unsigned int FrontRightBuffer
Definition: vtkOpenGLRenderWindow.h:314
vtkOpenGLRenderWindow::FrontBuffer
unsigned int FrontBuffer
Definition: vtkOpenGLRenderWindow.h:315
vtkMTimeType
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
vtkOpenGLRenderWindow::ContextCreationTime
vtkTimeStamp ContextCreationTime
Definition: vtkOpenGLRenderWindow.h:323
vtkOpenGLExtensionManager
Interface class for querying and using OpenGL extensions.
vtkTextureUnitManager
allocate/free texture units.
Definition: vtkTextureUnitManager.h:38
vtkOpenGLRenderWindow::HardwareOffScreenBuffersBind
bool HardwareOffScreenBuffersBind
Definition: vtkOpenGLRenderWindow.h:293
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkOpenGLHardwareSupport
OpenGL rendering window.
Definition: vtkOpenGLHardwareSupport.h:37
vtkOpenGLRenderWindow::OwnContext
int OwnContext
Flag telling if the context has been created here or was inherited.
Definition: vtkOpenGLRenderWindow.h:321
vtkRenderWindow::GetZbufferData
virtual float * GetZbufferData(int x, int y, int x2, int y2)=0
Set/Get the zbuffer data from the frame buffer.
vtkRenderWindow::GetRGBACharPixelData
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)=0
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkOpenGLRenderWindow::FrontLeftBuffer
unsigned int FrontLeftBuffer
Definition: vtkOpenGLRenderWindow.h:313
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkRenderWindow::WaitForCompletion
virtual void WaitForCompletion()=0
Block the thread until the actual rendering is finished().
vtkRenderWindow::SetPixelData
virtual int SetPixelData(int x, int y, int x2, int y2, unsigned char *data, int front)=0
Set/Get the pixel data of an image, transmitted as RGBRGBRGB.
vtkWindow::GetPixelData
virtual unsigned char * GetPixelData(int x, int y, int x2, int y2, int front)=0
Get the pixel data of an image, transmitted as RGBRGBRGB.
vtkRenderWindow::SetZbufferData
virtual int SetZbufferData(int x, int y, int x2, int y2, float *z)=0
vtkOpenGLRenderWindow::BackRightBuffer
unsigned int BackRightBuffer
Definition: vtkOpenGLRenderWindow.h:312
vtkRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindow::StereoUpdate
virtual void StereoUpdate()
Update the system, if needed, due to stereo rendering.
vtkRenderWindow::ReleaseRGBAPixelData
virtual void ReleaseRGBAPixelData(float *data)=0
vtkOpenGLRenderWindow::BackLeftBuffer
unsigned int BackLeftBuffer
Definition: vtkOpenGLRenderWindow.h:311
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:38
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:86
vtkRenderWindow::GetRenderingBackend
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
vtkOpenGLRenderWindow::DepthRenderBufferObject
unsigned int DepthRenderBufferObject
Definition: vtkOpenGLRenderWindow.h:291
vtkOpenGLRenderWindow::BackBuffer
unsigned int BackBuffer
Definition: vtkOpenGLRenderWindow.h:316
vtkOpenGLRenderWindow::TextureResourceIds
vtkIdList * TextureResourceIds
Definition: vtkOpenGLRenderWindow.h:248
vtkOpenGL.h
vtkRenderWindow::GetRGBAPixelData
virtual float * GetRGBAPixelData(int x, int y, int x2, int y2, int front)=0
Same as Get/SetPixelData except that the image also contains an alpha component.