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
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:42
list of point or cell ids
Definition: vtkIdList.h:37
a simple class to control print indentation
Definition: vtkIndent.h:40
Interface class for querying and using OpenGL extensions.
OpenGL rendering window.
OpenGL rendering window.
vtkOpenGLExtensionManager * GetExtensionManager()
Returns the extension manager.
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...
virtual int GetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *z)
virtual bool GetUseOffScreenBuffers()
vtkTextureUnitManager * TextureUnitManager
int GetColorBufferSizes(int *rgba)
Get the size of the color buffer.
virtual int GetRGBAPixelData(int x, int y, int x2, int y2, int front, vtkFloatArray *data)
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
void SetTextureUnitManager(vtkTextureUnitManager *textureUnitManager)
Set the texture unit manager.
int OwnContext
Flag telling if the context has been created here or was inherited.
unsigned int GetBackRightBuffer()
Return the OpenGL name of the back right buffer.
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
virtual void WaitForCompletion()
Block the thread until the actual rendering is finished().
virtual int SetZbufferData(int x1, int y1, int x2, int y2, float *buffer)
virtual void ReleaseRGBAPixelData(float *data)
static void SetGlobalMaximumNumberOfMultiSamples(int val)
Set/Get the maximum number of multisamples.
int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, unsigned char *data)
vtkTextureUnitManager * GetTextureUnitManager()
Returns its texture unit manager object.
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, vtkFloatArray *data, int front, int blend=0)
void BindHardwareOffScreenBuffers()
vtkOpenGLHardwareSupport * GetHardwareSupport()
Returns an Hardware Support object.
void DestroyHardwareOffScreenBuffers()
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.
int GetDepthBufferSize()
Get the size of the depth buffer.
void RegisterTextureResource(GLuint id)
Register a texture name with this render window.
unsigned int GetBackBuffer()
Return the OpenGL name of the back left buffer.
virtual void SetSize(int, int)
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0)
int OffScreenUseFrameBuffer
Flag telling if a framebuffer-based offscreen is currently in use.
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front, int blend=0)
int CreateHardwareOffScreenBuffers(int width, int height, bool bind=false)
unsigned int GetFrontRightBuffer()
Return the OpenGL name of the front right buffer.
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
unsigned int GetFrontBuffer()
Return the OpenGL name of the front left buffer.
int NumberOfFrameBuffers
Variables used by the framebuffer-based offscreen method.
virtual void OpenGLInitContext()
virtual int GetPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data)
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *data, int front, int blend=0)
unsigned int GetBackLeftBuffer()
Return the OpenGL name of the back left buffer.
virtual void OpenGLInitState()
static int GetGlobalMaximumNumberOfMultiSamples()
virtual void CreateAWindow()=0
Create a not-off-screen window.
int GetRGBAPixelData(int x, int y, int x2, int y2, int front, float *data)
int CreateHardwareOffScreenWindow(int width, int height)
Create an offScreen window based on OpenGL framebuffer extension.
unsigned int GetFrontLeftBuffer()
Return the OpenGL name of the front left buffer.
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)
virtual vtkMTimeType GetContextCreationTime()
Get the time when the OpenGL context was created.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void StereoUpdate()
Update system if needed due to stereo rendering.
void UnbindHardwareOffScreenBuffers()
int GetPixelData(int x, int y, int x2, int y2, int front, unsigned char *data)
virtual int SetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *buffer)
virtual void OpenGLInit()
Initialize OpenGL for this window.
virtual float * GetRGBAPixelData(int x, int y, int x2, int y2, int front)
Set/Get the pixel data of an image, transmitted as RGBARGBA...
void DestroyHardwareOffScreenWindow()
Destroy an offscreen window based on OpenGL framebuffer extension.
virtual float * GetZbufferData(int x1, int y1, int x2, int y2)
Set/Get the zbuffer data from an image.
virtual int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data)
virtual int SetUseOffScreenBuffers(bool offScreen)
Create and bind offscreen rendering buffers without destroying the current OpenGL context.
virtual int GetZbufferData(int x1, int y1, int x2, int y2, float *z)
virtual int SetPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front)
create a window for renderers to draw into
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:49
allocate/free texture units.
record modification and/or execution time
Definition: vtkTimeStamp.h:36
dynamic, self-adjusting array of unsigned char
@ height
Definition: vtkX3D.h:254
@ data
Definition: vtkX3D.h:315
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248