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
OpenGL rendering window.
int OwnContext
Flag telling if the context has been created here or was inherited.
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
int OffScreenUseFrameBuffer
Flag telling if a framebuffer-based offscreen is currently in use.
virtual int SetUseOffScreenBuffers(bool)
Create and bind offscreen rendering buffers without destroying the current OpenGL context...
int NumberOfFrameBuffers
Variables used by the framebuffer-based offscreen method.
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.
bool HardwareOffScreenBuffersBind
Variables used by the framebuffer-based offscreen method.
record modification and/or execution time
Definition: vtkTimeStamp.h:35
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:41
virtual int GetColorBufferSizes(int *rgba)=0
Get the size of the color buffer.
vtkTextureUnitManager * TextureUnitManager
virtual int SetRGBAPixelData(int x, int y, int x2, int y2, float *, int front, int blend=0)=0
Same as Get/SetPixelData except that the image also contains an alpha component.
vtkTypeUInt64 vtkMTimeType
Definition: vtkType.h:248
virtual void SetSize(int, int)
Set/Get the size of the window in screen coordinates in pixels.
virtual unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front)=0
Same as Get/SetPixelData except that the image also contains an alpha component.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void ReleaseRGBAPixelData(float *data)=0
Same as Get/SetPixelData except that the image also contains an alpha component.
unsigned int FrameBufferObject
Variables used by the framebuffer-based offscreen method.
list of point or cell ids
Definition: vtkIdList.h:36
virtual int GetDepthBufferSize()=0
This method should be defined by the subclass.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual int SetZbufferData(int x, int y, int x2, int y2, float *z)=0
Set/Get the zbuffer data from the frame buffer.
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.
virtual void StereoUpdate()
Update the system, if needed, due to stereo rendering.
Interface class for querying and using OpenGL extensions.
dynamic, self-adjusting array of unsigned char
allocate/free texture units.
create a window for renderers to draw into
OpenGL rendering window.
virtual const char * GetRenderingBackend()
What rendering backend has the user requested.
virtual float * GetZbufferData(int x, int y, int x2, int y2)=0
Set/Get the zbuffer data from the frame buffer.
unsigned int DepthRenderBufferObject
Variables used by the framebuffer-based offscreen method.
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.
virtual int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0)=0
Same as Get/SetPixelData except that the image also contains an alpha component.
virtual bool GetUseOffScreenBuffers()
virtual void WaitForCompletion()=0
Block the thread until the actual rendering is finished().