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 =========================================================================*/
28 #ifndef vtkOpenGLRenderWindow_h
29 #define vtkOpenGLRenderWindow_h
30 
31 #include "vtkRenderingOpenGLModule.h" // For export macro
32 #include "vtkRenderWindow.h"
33 #include "vtkOpenGL.h" // Needed for GLuint.
34 
35 class vtkIdList;
39 class vtkStdString;
40 
41 class VTKRENDERINGOPENGL_EXPORT vtkOpenGLRenderWindow : public vtkRenderWindow
42 {
43 public:
45  void PrintSelf(ostream& os, vtkIndent indent);
46 
48 
54 
58  virtual const char *GetRenderingBackend();
59 
63  virtual void StereoUpdate();
64 
66 
69  virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
70  virtual int GetPixelData(int x,int y,int x2,int y2, int front,
72  virtual int SetPixelData(int x,int y,int x2,int y2,unsigned char *data,
73  int front);
74  virtual int SetPixelData(int x,int y,int x2,int y2,
75  vtkUnsignedCharArray *data, int front);
77 
79 
82  virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
83  virtual int GetRGBAPixelData(int x,int y,int x2,int y2, int front,
85  virtual int SetRGBAPixelData(int x,int y,int x2,int y2, float *data,
86  int front, int blend=0);
87  virtual int SetRGBAPixelData(int x,int y,int x2,int y2, vtkFloatArray *data,
88  int front, int blend=0);
89  virtual void ReleaseRGBAPixelData(float *data);
90  virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,
91  int front);
92  virtual int GetRGBACharPixelData(int x,int y,int x2,int y2, int front,
94  virtual int SetRGBACharPixelData(int x, int y, int x2, int y2,
95  unsigned char *data, int front,
96  int blend=0);
97  virtual int SetRGBACharPixelData(int x,int y,int x2,int y2,
98  vtkUnsignedCharArray *data, int front,
99  int blend=0);
101 
103 
106  virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
107  virtual int GetZbufferData( int x1, int y1, int x2, int y2, float* z );
108  virtual int GetZbufferData( int x1, int y1, int x2, int y2,
109  vtkFloatArray* z );
110  virtual int SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
111  virtual int SetZbufferData( int x1, int y1, int x2, int y2,
112  vtkFloatArray *buffer );
114 
118  void RegisterTextureResource (GLuint id);
119 
124 
129  int GetColorBufferSizes(int *rgba);
130 
132 
135  virtual void SetSize(int a[2]);
136  virtual void SetSize(int,int);
138 
142  virtual void OpenGLInit();
143 
144  // Initialize the state of OpenGL that VTK wants for this window
145  virtual void OpenGLInitState();
146 
147  // Initialize VTK for rendering in a new OpenGL context
148  virtual void OpenGLInitContext();
149 
157  unsigned int GetBackLeftBuffer();
158 
166  unsigned int GetBackRightBuffer();
167 
175  unsigned int GetFrontLeftBuffer();
176 
184  unsigned int GetFrontRightBuffer();
185 
193  unsigned int GetBackBuffer();
194 
202  unsigned int GetFrontBuffer();
203 
208 
214 
220 
226 
231  virtual void WaitForCompletion();
232 
234 
242  virtual int SetUseOffScreenBuffers(bool offScreen);
243  virtual bool GetUseOffScreenBuffers();
245 
246 protected:
249 
252 
253  int GetPixelData(int x, int y, int x2, int y2, int front, unsigned char* data);
254  int GetRGBAPixelData(int x, int y, int x2, int y2, int front, float* data);
255  int GetRGBACharPixelData(int x, int y, int x2, int y2, int front,
256  unsigned char* data);
257 
268 
269  int CreateHardwareOffScreenBuffers(int width, int height, bool bind = false);
271 
278 
281 
286 
288 
292  unsigned int TextureObjects[4]; // really GLuint
293  unsigned int FrameBufferObject; // really GLuint
294  unsigned int DepthRenderBufferObject; // really GLuint
295  int HardwareBufferSize[2];
298 
302  virtual void CreateAWindow() = 0;
303 
307  virtual void DestroyWindow() = 0;
308 
312  void SetTextureUnitManager(vtkTextureUnitManager *textureUnitManager);
313 
314  unsigned int BackLeftBuffer;
315  unsigned int BackRightBuffer;
316  unsigned int FrontLeftBuffer;
317  unsigned int FrontRightBuffer;
318  unsigned int FrontBuffer;
319  unsigned int BackBuffer;
320 
325 
327 
329 
330 private:
331  vtkOpenGLRenderWindow(const vtkOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
332  void operator=(const vtkOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
333 
334  void SetExtensionManager(vtkOpenGLExtensionManager*);
335  void SetHardwareSupport(vtkOpenGLHardwareSupport * renderWindow);
336 
337  vtkOpenGLExtensionManager* ExtensionManager;
338  vtkOpenGLHardwareSupport* HardwareSupport;
339 };
340 
341 #endif
vtkOpenGLRenderWindow::SetPixelData
virtual int SetPixelData(int x, int y, int x2, int y2, unsigned char *data, int front)
Set/Get the pixel data of an image, transmitted as RGBRGBRGB.
vtkOpenGLRenderWindow::GetContextCreationTime
virtual vtkMTimeType GetContextCreationTime()
Get the time when the OpenGL context was created.
vtkOpenGLRenderWindow::GetRenderingBackend
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
vtkOpenGLRenderWindow::OpenGLInit
virtual void OpenGLInit()
Initialize OpenGL for this window.
vtkOpenGLRenderWindow::DestroyHardwareOffScreenBuffers
void DestroyHardwareOffScreenBuffers()
vtkOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkOpenGLRenderWindow::SetZbufferData
virtual int SetZbufferData(int x1, int y1, int x2, int y2, float *buffer)
vtkOpenGLRenderWindow::NumberOfFrameBuffers
int NumberOfFrameBuffers
Variables used by the framebuffer-based offscreen method.
Definition: vtkOpenGLRenderWindow.h:291
vtkOpenGLRenderWindow::GetZbufferData
virtual int GetZbufferData(int x1, int y1, int x2, int y2, float *z)
vtkOpenGLRenderWindow::DestroyHardwareOffScreenWindow
void DestroyHardwareOffScreenWindow()
Destroy an offscreen window based on OpenGL framebuffer extension.
vtkOpenGLRenderWindow::SetPixelData
virtual int SetPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front)
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
vtkX3D::data
@ data
Definition: vtkX3D.h:315
vtkOpenGLRenderWindow::SetRGBAPixelData
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *data, int front, int blend=0)
vtkOpenGLRenderWindow::SetUseOffScreenBuffers
virtual int SetUseOffScreenBuffers(bool offScreen)
Create and bind offscreen rendering buffers without destroying the current OpenGL context.
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:36
vtkOpenGLRenderWindow::SetTextureUnitManager
void SetTextureUnitManager(vtkTextureUnitManager *textureUnitManager)
Set the texture unit manager.
vtkOpenGLRenderWindow::TextureUnitManager
vtkTextureUnitManager * TextureUnitManager
Definition: vtkOpenGLRenderWindow.h:328
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:42
vtkOpenGLRenderWindow::BindHardwareOffScreenBuffers
void BindHardwareOffScreenBuffers()
vtkRenderWindow.h
vtkOpenGLRenderWindow::OldMonitorSetting
long OldMonitorSetting
Definition: vtkOpenGLRenderWindow.h:250
vtkOpenGLRenderWindow::CreateHardwareOffScreenWindow
int CreateHardwareOffScreenWindow(int width, int height)
Create an offScreen window based on OpenGL framebuffer extension.
vtkOpenGLRenderWindow::FrameBufferObject
unsigned int FrameBufferObject
Definition: vtkOpenGLRenderWindow.h:293
vtkOpenGLRenderWindow::GetBackLeftBuffer
unsigned int GetBackLeftBuffer()
Return the OpenGL name of the back left buffer.
vtkOpenGLRenderWindow::SetRGBACharPixelData
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0)
vtkOpenGLRenderWindow::OffScreenUseFrameBuffer
int OffScreenUseFrameBuffer
Flag telling if a framebuffer-based offscreen is currently in use.
Definition: vtkOpenGLRenderWindow.h:285
vtkOpenGLRenderWindow::FrontRightBuffer
unsigned int FrontRightBuffer
Definition: vtkOpenGLRenderWindow.h:317
vtkOpenGLRenderWindow::GetBackRightBuffer
unsigned int GetBackRightBuffer()
Return the OpenGL name of the back right buffer.
vtkOpenGLRenderWindow::~vtkOpenGLRenderWindow
~vtkOpenGLRenderWindow()
vtkOpenGLRenderWindow::GetZbufferData
virtual int GetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *z)
vtkOpenGLRenderWindow::SetRGBACharPixelData
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front, int blend=0)
vtkOpenGLRenderWindow::FrontBuffer
unsigned int FrontBuffer
Definition: vtkOpenGLRenderWindow.h:318
vtkOpenGLRenderWindow::GetRGBACharPixelData
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)
vtkMTimeType
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
vtkOpenGLRenderWindow::GetZbufferData
virtual float * GetZbufferData(int x1, int y1, int x2, int y2)
Set/Get the zbuffer data from an image.
vtkOpenGLRenderWindow::ContextCreationTime
vtkTimeStamp ContextCreationTime
Definition: vtkOpenGLRenderWindow.h:326
vtkOpenGLRenderWindow::GetRGBAPixelData
int GetRGBAPixelData(int x, int y, int x2, int y2, int front, float *data)
vtkOpenGLExtensionManager
Interface class for querying and using OpenGL extensions.
vtkTextureUnitManager
allocate/free texture units.
Definition: vtkTextureUnitManager.h:39
vtkOpenGLRenderWindow::WaitForCompletion
virtual void WaitForCompletion()
Block the thread until the actual rendering is finished().
vtkOpenGLRenderWindow::GetPixelData
virtual int GetPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data)
vtkOpenGLRenderWindow::HardwareOffScreenBuffersBind
bool HardwareOffScreenBuffersBind
Definition: vtkOpenGLRenderWindow.h:296
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkOpenGLHardwareSupport
OpenGL rendering window.
Definition: vtkOpenGLHardwareSupport.h:39
vtkOpenGLRenderWindow::GetPixelData
virtual unsigned char * GetPixelData(int x, int y, int x2, int y2, int front)
Set/Get the pixel data of an image, transmitted as RGBRGB...
vtkOpenGLRenderWindow::GetPixelData
int GetPixelData(int x, int y, int x2, int y2, int front, unsigned char *data)
vtkOpenGLRenderWindow::OpenGLInitState
virtual void OpenGLInitState()
vtkOpenGLRenderWindow::OwnContext
int OwnContext
Flag telling if the context has been created here or was inherited.
Definition: vtkOpenGLRenderWindow.h:324
vtkOpenGLRenderWindow::OpenGLInitContext
virtual void OpenGLInitContext()
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkOpenGLRenderWindow::GetExtensionManager
vtkOpenGLExtensionManager * GetExtensionManager()
Returns the extension manager.
vtkOpenGLRenderWindow::StereoUpdate
virtual void StereoUpdate()
Update system if needed due to stereo rendering.
vtkOpenGLRenderWindow::GetFrontBuffer
unsigned int GetFrontBuffer()
Return the OpenGL name of the front left buffer.
vtkOpenGLRenderWindow::FrontLeftBuffer
unsigned int FrontLeftBuffer
Definition: vtkOpenGLRenderWindow.h:316
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:37
vtkOpenGLRenderWindow::SetZbufferData
virtual int SetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *buffer)
vtkOpenGLRenderWindow::GetBackBuffer
unsigned int GetBackBuffer()
Return the OpenGL name of the back left buffer.
vtkOpenGLRenderWindow::GetTextureUnitManager
vtkTextureUnitManager * GetTextureUnitManager()
Returns its texture unit manager object.
vtkOpenGLRenderWindow::RegisterTextureResource
void RegisterTextureResource(GLuint id)
Register a texture name with this render window.
vtkOpenGLRenderWindow::GetFrontLeftBuffer
unsigned int GetFrontLeftBuffer()
Return the OpenGL name of the front left buffer.
vtkOpenGLRenderWindow::CreateHardwareOffScreenBuffers
int CreateHardwareOffScreenBuffers(int width, int height, bool bind=false)
vtkOpenGLRenderWindow::GetFrontRightBuffer
unsigned int GetFrontRightBuffer()
Return the OpenGL name of the front right buffer.
vtkOpenGLRenderWindow::GetRGBAPixelData
virtual float * GetRGBAPixelData(int x, int y, int x2, int y2, int front)
Set/Get the pixel data of an image, transmitted as RGBARGBA...
vtkOpenGLRenderWindow::GetUseOffScreenBuffers
virtual bool GetUseOffScreenBuffers()
vtkOpenGLRenderWindow::BackRightBuffer
unsigned int BackRightBuffer
Definition: vtkOpenGLRenderWindow.h:315
vtkOpenGLRenderWindow::vtkOpenGLRenderWindow
vtkOpenGLRenderWindow()
vtkOpenGLRenderWindow::GetHardwareSupport
vtkOpenGLHardwareSupport * GetHardwareSupport()
Returns an Hardware Support object.
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkOpenGLRenderWindow::GetGlobalMaximumNumberOfMultiSamples
static int GetGlobalMaximumNumberOfMultiSamples()
vtkOpenGLRenderWindow::GetColorBufferSizes
int GetColorBufferSizes(int *rgba)
Get the size of the color buffer.
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int, int)
vtkOpenGLRenderWindow::BackLeftBuffer
unsigned int BackLeftBuffer
Definition: vtkOpenGLRenderWindow.h:314
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:42
vtkOpenGLRenderWindow::ReleaseRGBAPixelData
virtual void ReleaseRGBAPixelData(float *data)
vtkOpenGLRenderWindow::GetDepthBufferSize
int GetDepthBufferSize()
Get the size of the depth buffer.
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:87
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:49
vtkOpenGLRenderWindow::DepthRenderBufferObject
unsigned int DepthRenderBufferObject
Definition: vtkOpenGLRenderWindow.h:294
vtkOpenGLRenderWindow::BackBuffer
unsigned int BackBuffer
Definition: vtkOpenGLRenderWindow.h:319
vtkOpenGLRenderWindow::GetRGBAPixelData
virtual int GetRGBAPixelData(int x, int y, int x2, int y2, int front, vtkFloatArray *data)
vtkOpenGLRenderWindow::UnbindHardwareOffScreenBuffers
void UnbindHardwareOffScreenBuffers()
vtkOpenGLRenderWindow::SetGlobalMaximumNumberOfMultiSamples
static void SetGlobalMaximumNumberOfMultiSamples(int val)
Set/Get the maximum number of multisamples.
vtkOpenGLRenderWindow::SetRGBAPixelData
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, vtkFloatArray *data, int front, int blend=0)
vtkOpenGLRenderWindow::GetRGBACharPixelData
virtual int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data)
vtkOpenGLRenderWindow::TextureResourceIds
vtkIdList * TextureResourceIds
Definition: vtkOpenGLRenderWindow.h:251
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkOpenGL.h
vtkOpenGLRenderWindow::GetRGBACharPixelData
int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, unsigned char *data)
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.