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 =========================================================================*/
26 #ifndef vtkOpenGLRenderer_h
27 #define vtkOpenGLRenderer_h
28 
29 #include "vtkRenderingOpenGLModule.h" // For export macro
30 #include "vtkRenderer.h"
31 
32 class vtkOpenGLRendererLayerList; // Pimpl
33 class vtkRenderPass;
34 class vtkShaderProgram2;
35 
36 class VTKRENDERINGOPENGL_EXPORT vtkOpenGLRenderer : public vtkRenderer
37 {
38 public:
41  void PrintSelf(ostream& os, vtkIndent indent);
42 
46  void DeviceRender(void);
47 
52 
60 
65  virtual void ClearLights(void);
66 
67  virtual void Clear(void);
68 
72  int UpdateLights(void);
73 
81 
83 
86  vtkGetObjectMacro(ShaderProgram, vtkShaderProgram2);
87  virtual void SetShaderProgram(vtkShaderProgram2 *program);
89 
90 protected:
93 
97  void CheckCompilation(unsigned int fragmentShader);
98 
99  // Internal method to release graphics resources in any derived renderers.
101 
102  // Picking functions to be implemented by sub-classes
103  virtual void DevicePickRender();
104  virtual void StartPick(unsigned int pickFromSize);
105  virtual void UpdatePickId();
106  virtual void DonePick();
107  virtual unsigned int GetPickedId();
108  virtual unsigned int GetNumPickedIds();
109  virtual int GetPickedIds(unsigned int atMost, unsigned int *callerBuffer);
110  virtual double GetPickedZ();
111 
112  // Ivars used in picking
113  class vtkGLPickInfo* PickInfo;
114 
115  double PickedZ;
116 
124  int RenderPeel(int layer);
125 
126  friend class vtkOpenGLProperty;
127  friend class vtkOpenGLTexture;
129  friend class vtkOpenGLImageResliceMapper;
130 
136 
142 
148 
154 
158  vtkOpenGLRendererLayerList *LayerList;
159 
160  unsigned int OpaqueLayerZ;
161  unsigned int TransparentLayerZ;
162  unsigned int ProgramShader;
163 
165 
173 
178  unsigned int DepthFormat;
179 
180  // Is rendering at translucent geometry stage using depth peeling and
181  // rendering a layer other than the first one? (Boolean value)
182  // If so, the uniform variables UseTexture and Texture can be set.
183  // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
185 
187 
188  friend class vtkRenderPass;
189 
190 private:
191  vtkOpenGLRenderer(const vtkOpenGLRenderer&) VTK_DELETE_FUNCTION;
192  void operator=(const vtkOpenGLRenderer&) VTK_DELETE_FUNCTION;
193 };
194 
195 #endif
vtkOpenGLRenderer::RenderPeel
int RenderPeel(int layer)
Render a peel layer.
vtkOpenGLRenderer::GetDepthPeelingHigherLayer
int GetDepthPeelingHigherLayer()
Is rendering at translucent geometry stage using depth peeling and rendering a layer other than the f...
vtkOpenGLRenderer::PickInfo
class vtkGLPickInfo * PickInfo
Definition: vtkOpenGLRenderer.h:113
vtkOpenGLRenderer::GetNumPickedIds
virtual unsigned int GetNumPickedIds()
vtkOpenGLRenderer::DevicePickRender
virtual void DevicePickRender()
vtkOpenGLRenderer::GetPickedIds
virtual int GetPickedIds(unsigned int atMost, unsigned int *callerBuffer)
vtkOpenGLRenderer::DepthFormat
unsigned int DepthFormat
Actual depth format: vtkgl::DEPTH_COMPONENT16_ARB or vtkgl::DEPTH_COMPONENT24_ARB.
Definition: vtkOpenGLRenderer.h:178
vtkOpenGLRenderer::GetPickedZ
virtual double GetPickedZ()
Return the Z value for the last picked Prop.
vtkOpenGLRenderer::ProgramShader
unsigned int ProgramShader
Definition: vtkOpenGLRenderer.h:162
vtkOpenGLProperty
OpenGL property.
Definition: vtkOpenGLProperty.h:38
vtkRenderer.h
vtkOpenGLRenderer::ViewportWidth
int ViewportWidth
Definition: vtkOpenGLRenderer.h:170
vtkOpenGLRenderer::~vtkOpenGLRenderer
~vtkOpenGLRenderer()
vtkOpenGLRenderer::GetPickedId
virtual unsigned int GetPickedId()
vtkOpenGLRenderer::SetShaderProgram
virtual void SetShaderProgram(vtkShaderProgram2 *program)
vtkOpenGLRenderer::LayerList
vtkOpenGLRendererLayerList * LayerList
Used by the depth peeling technique to store the transparency layers.
Definition: vtkOpenGLRenderer.h:158
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
vtkOpenGLRenderer::DepthPeelingIsSupportedChecked
int DepthPeelingIsSupportedChecked
This flag is on once the OpenGL extensions required by the depth peeling technique have been checked.
Definition: vtkOpenGLRenderer.h:153
vtkOpenGLRenderer::DeviceRender
void DeviceRender(void)
Concrete open gl render method.
vtkOpenGLRenderer::DeviceRenderOpaqueGeometry
virtual void DeviceRenderOpaqueGeometry()
Overridden to support hidden line removal.
vtkOpenGLRenderer::New
static vtkOpenGLRenderer * New()
vtkOpenGLRenderer::Clear
virtual void Clear(void)
Clear the image to the background color.
vtkOpenGLRenderer::ViewportX
int ViewportX
Cache viewport values for depth peeling.
Definition: vtkOpenGLRenderer.h:168
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkOpenGLRenderer::ViewportHeight
int ViewportHeight
Definition: vtkOpenGLRenderer.h:171
vtkOpenGLRenderer::StartPick
virtual void StartPick(unsigned int pickFromSize)
vtkOpenGLRenderer
OpenGL renderer.
Definition: vtkOpenGLRenderer.h:37
vtkOpenGLRenderer::ClearLights
virtual void ClearLights(void)
Internal method temporarily removes lights before reloading them into graphics pipeline.
vtkOpenGLImageSliceMapper
OpenGL mapper for image slice display.
Definition: vtkOpenGLImageSliceMapper.h:42
vtkOpenGLRenderer::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkOpenGLRenderer::DonePick
virtual void DonePick()
vtkOpenGLRenderer::NumberOfLightsBound
int NumberOfLightsBound
Definition: vtkOpenGLRenderer.h:117
vtkOpenGLRenderer::ViewportY
int ViewportY
Definition: vtkOpenGLRenderer.h:169
vtkOpenGLRenderer::OpaqueLayerZ
unsigned int OpaqueLayerZ
Definition: vtkOpenGLRenderer.h:160
vtkOpenGLRenderer::GetUseTextureUniformVariable
int GetUseTextureUniformVariable()
Access to the OpenGL program shader uniform variable "useTexture" from the vtkOpenGLProperty or vtkOp...
vtkOpenGLRenderer::DepthPeelingHigherLayer
int DepthPeelingHigherLayer
Definition: vtkOpenGLRenderer.h:184
vtkShaderProgram2
GLSL Program.
Definition: vtkShaderProgram2.h:69
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkOpenGLRenderer::TransparentLayerZ
unsigned int TransparentLayerZ
Definition: vtkOpenGLRenderer.h:161
vtkOpenGLRenderer::vtkOpenGLRenderer
vtkOpenGLRenderer()
vtkOpenGLRenderer::ReleaseGraphicsResources
virtual void ReleaseGraphicsResources(vtkWindow *w)
vtkOpenGLTexture
OpenGL texture map.
Definition: vtkOpenGLTexture.h:40
vtkOpenGLRenderer::ShaderProgram
vtkShaderProgram2 * ShaderProgram
Definition: vtkOpenGLRenderer.h:186
vtkOpenGLRenderer::GetTextureUniformVariable
int GetTextureUniformVariable()
Access to the OpenGL program shader uniform variable "texture" from the vtkOpenGLProperty or vtkOpenG...
vtkOpenGLRenderer::UpdatePickId
virtual void UpdatePickId()
vtkOpenGLRenderer::UpdateLights
int UpdateLights(void)
Ask lights to load themselves into graphics pipeline.
vtkOpenGLRenderer::CheckCompilation
void CheckCompilation(unsigned int fragmentShader)
Check the compilation status of some fragment shader source.
vtkOpenGLRenderer::PickedZ
double PickedZ
Definition: vtkOpenGLRenderer.h:115
vtkOpenGLRenderer::DepthPeelingIsSupported
int DepthPeelingIsSupported
This flag is on if the current OpenGL context supports extensions required by the depth peeling techn...
Definition: vtkOpenGLRenderer.h:147
vtkX3D::ShaderProgram
@ ShaderProgram
Definition: vtkX3D.h:202
vtkRenderPass
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:59
vtkOpenGLRenderer::DeviceRenderTranslucentPolygonalGeometry
virtual void DeviceRenderTranslucentPolygonalGeometry()
Render translucent polygonal geometry.