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 
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.
#define VTKRENDERINGOPENGL2_EXPORT
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