VTK
vtkOpenGLRenderer.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLRenderer.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 =========================================================================*/
23 #ifndef vtkOpenGLRenderer_h
24 #define vtkOpenGLRenderer_h
25 
26 #include "vtkRenderingOpenGL2Module.h" // For export macro
27 #include "vtkRenderer.h"
28 #include <vector> // STL Header
29 
31 class vtkRenderPass;
32 class vtkOpenGLTexture;
33 class vtkTextureObject;
35 class vtkShadowMapPass;
36 
37 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLRenderer : public vtkRenderer
38 {
39 public:
40  static vtkOpenGLRenderer *New();
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
47  void DeviceRender(void) override;
48 
52  void DeviceRenderOpaqueGeometry() override;
53 
61 
62  void Clear(void) override;
63 
67  int UpdateLights(void) override;
68 
75  int GetDepthPeelingHigherLayer();
76 
81  bool HaveApplePrimitiveIdBug();
82 
87  static bool HaveAppleQueryAllocationBug();
88 
94  bool IsDualDepthPeelingSupported();
95 
96 protected:
98  ~vtkOpenGLRenderer() override;
99 
103  void CheckCompilation(unsigned int fragmentShader);
104 
105  // Internal method to release graphics resources in any derived renderers.
106  void ReleaseGraphicsResources(vtkWindow *w) override;
107 
113  int UpdateGeometry() override;
114 
115  // Picking functions to be implemented by sub-classes
116  void DevicePickRender() override;
117  void StartPick(unsigned int pickFromSize) override;
118  void UpdatePickId() override;
119  void DonePick() override;
120  unsigned int GetPickedId() override;
121  unsigned int GetNumPickedIds() override;
122  int GetPickedIds(unsigned int atMost, unsigned int *callerBuffer) override;
123  double GetPickedZ() override;
124 
125  // Ivars used in picking
126  class vtkGLPickInfo* PickInfo;
127 
128  double PickedZ;
129 
130  friend class vtkOpenGLProperty;
131  friend class vtkOpenGLTexture;
132  friend class vtkOpenGLImageSliceMapper;
133  friend class vtkOpenGLImageResliceMapper;
134 
139 
144 
149 
150  // Is rendering at translucent geometry stage using depth peeling and
151  // rendering a layer other than the first one? (Boolean value)
152  // If so, the uniform variables UseTexture and Texture can be set.
153  // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
154  int DepthPeelingHigherLayer;
155 
156  friend class vtkRenderPass;
157 
160 
161 private:
162  vtkOpenGLRenderer(const vtkOpenGLRenderer&) = delete;
163  void operator=(const vtkOpenGLRenderer&) = delete;
164 };
165 
166 #endif
virtual double GetPickedZ()=0
Return the Z value for the last picked Prop.
Implement an Order Independent Transparency render pass.
virtual void ReleaseGraphicsResources(vtkWindow *)
vtkShadowMapPass * ShadowMapPass
Shadows are delegated to an instance of vtkShadowMapPass.
virtual int UpdateGeometry()
Ask all props to update and draw any opaque and translucent geometry.
virtual int UpdateLights(void)
Ask all lights to load themselves into rendering pipeline.
Definition: vtkRenderer.h:873
abstract specification for renderers
Definition: vtkRenderer.h:63
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int GetPickedIds(unsigned int atMost, unsigned int *callerBuffer)=0
OpenGL property.
OpenGL mapper for image slice display.
OpenGL texture map.
virtual void UpdatePickId()=0
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkOpenGLFXAAFilter * FXAAFilter
FXAA is delegated to an instance of vtkOpenGLFXAAFilter.
virtual void DeviceRender()=0
Create an image.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void DeviceRenderTranslucentPolygonalGeometry()
Render translucent polygonal geometry.
virtual void DeviceRenderOpaqueGeometry()
Render opaque polygonal geometry.
vtkDepthPeelingPass * DepthPeelingPass
Depth peeling is delegated to an instance of vtkDepthPeelingPass.
virtual unsigned int GetPickedId()=0
abstracts an OpenGL texture object.
virtual void StartPick(unsigned int pickFromSize)=0
virtual unsigned int GetNumPickedIds()=0
static vtkRenderer * New()
Create a vtkRenderer with a black background, a white ambient light, two-sided lighting turned on,...
Implement a shadow mapping render pass.
virtual void DevicePickRender()=0
Perform FXAA antialiasing on the current framebuffer.
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:58
OpenGL renderer.
virtual void DonePick()=0
virtual void Clear()
Clear the image to the background color.
Definition: vtkRenderer.h:326