/usr/include/vtk-6.3/vtkOpenGLRenderer.h is in libvtk6-dev 6.3.0+dfsg1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkOpenGLRenderer.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkOpenGLRenderer - OpenGL renderer
// .SECTION Description
// vtkOpenGLRenderer is a concrete implementation of the abstract class
// vtkRenderer. vtkOpenGLRenderer interfaces to the OpenGL graphics library.
#ifndef vtkOpenGLRenderer_h
#define vtkOpenGLRenderer_h
#include "vtkRenderingOpenGLModule.h" // For export macro
#include "vtkRenderer.h"
class vtkOpenGLRendererLayerList; // Pimpl
class vtkRenderPass;
class vtkShaderProgram2;
class VTKRENDERINGOPENGL_EXPORT vtkOpenGLRenderer : public vtkRenderer
{
public:
static vtkOpenGLRenderer *New();
vtkTypeMacro(vtkOpenGLRenderer, vtkRenderer);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Concrete open gl render method.
void DeviceRender(void);
// Description:
// Render translucent polygonal geometry. Default implementation just call
// UpdateTranslucentPolygonalGeometry().
// Subclasses of vtkRenderer that can deal with depth peeling must
// override this method.
virtual void DeviceRenderTranslucentPolygonalGeometry();
// Description:
// Internal method temporarily removes lights before reloading them
// into graphics pipeline.
void ClearLights(void);
virtual void Clear(void);
// Description:
// Ask lights to load themselves into graphics pipeline.
int UpdateLights(void);
// Description:
// Is rendering at translucent geometry stage using depth peeling and
// rendering a layer other than the first one? (Boolean value)
// If so, the uniform variables UseTexture and Texture can be set.
// (Used by vtkOpenGLProperty or vtkOpenGLTexture)
int GetDepthPeelingHigherLayer();
//BTX
// Description:
//
vtkGetObjectMacro(ShaderProgram, vtkShaderProgram2);
virtual void SetShaderProgram(vtkShaderProgram2 *program);
//ETX
// Description:
// Set/Get a custom render pass.
// Initial value is NULL.
void SetPass(vtkRenderPass *p);
vtkGetObjectMacro(Pass, vtkRenderPass);
protected:
vtkOpenGLRenderer();
~vtkOpenGLRenderer();
// Description:
// Check the compilation status of some fragment shader source.
void CheckCompilation(unsigned int fragmentShader);
// Internal method to release graphics resources in any derived renderers.
virtual void ReleaseGraphicsResources(vtkWindow *w);
//BTX
// Picking functions to be implemented by sub-classes
virtual void DevicePickRender();
virtual void StartPick(unsigned int pickFromSize);
virtual void UpdatePickId();
virtual void DonePick();
virtual unsigned int GetPickedId();
virtual unsigned int GetNumPickedIds();
virtual int GetPickedIds(unsigned int atMost, unsigned int *callerBuffer);
virtual double GetPickedZ();
// Ivars used in picking
class vtkGLPickInfo* PickInfo;
//ETX
double PickedZ;
int NumberOfLightsBound;
// Description:
// Render a peel layer. If there is no more GPU RAM to save the texture,
// return false otherwise returns true. Also if layer==0 and no prop have
// been rendered (there is no translucent geometry), it returns false.
// \pre positive_layer: layer>=0
int RenderPeel(int layer);
//BTX
friend class vtkOpenGLProperty;
friend class vtkOpenGLTexture;
friend class vtkOpenGLImageSliceMapper;
friend class vtkOpenGLImageResliceMapper;
//ETX
// Description:
// Access to the OpenGL program shader uniform variable "useTexture" from the
// vtkOpenGLProperty or vtkOpenGLTexture.
int GetUseTextureUniformVariable();
// Description:
// Access to the OpenGL program shader uniform variable "texture" from the
// vtkOpenGLProperty or vtkOpenGLTexture.
int GetTextureUniformVariable();
// Description:
// This flag is on if the current OpenGL context supports extensions
// required by the depth peeling technique.
int DepthPeelingIsSupported;
// Description:
// This flag is on once the OpenGL extensions required by the depth peeling
// technique have been checked.
int DepthPeelingIsSupportedChecked;
// Description:
// Used by the depth peeling technique to store the transparency layers.
vtkOpenGLRendererLayerList *LayerList;
unsigned int OpaqueLayerZ;
unsigned int TransparentLayerZ;
unsigned int ProgramShader;
// Description:
// Cache viewport values for depth peeling.
int ViewportX;
int ViewportY;
int ViewportWidth;
int ViewportHeight;
// Description:
// Actual depth format: vtkgl::DEPTH_COMPONENT16_ARB
// or vtkgl::DEPTH_COMPONENT24_ARB
unsigned int DepthFormat;
// Is rendering at translucent geometry stage using depth peeling and
// rendering a layer other than the first one? (Boolean value)
// If so, the uniform variables UseTexture and Texture can be set.
// (Used by vtkOpenGLProperty or vtkOpenGLTexture)
int DepthPeelingHigherLayer;
vtkShaderProgram2 *ShaderProgram;
friend class vtkRenderPass;
vtkRenderPass *Pass;
private:
vtkOpenGLRenderer(const vtkOpenGLRenderer&); // Not implemented.
void operator=(const vtkOpenGLRenderer&); // Not implemented.
};
#endif
|