VTK
vtkOpenGLShaderCache.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOpenGLTexture.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 =========================================================================*/
21 #ifndef vtkOpenGLShaderCache_h
22 #define vtkOpenGLShaderCache_h
23 
24 #include "vtkRenderingOpenGL2Module.h" // For export macro
25 #include "vtkObject.h"
26 #include "vtkShader.h" // for vtkShader::Type
27 #include <map> // for methods
28 
29 class vtkShaderProgram;
30 class vtkWindow;
31 
32 class VTKRENDERINGOPENGL2_EXPORT vtkOpenGLShaderCache : public vtkObject
33 {
34 public:
37  virtual void PrintSelf(ostream& os, vtkIndent indent);
38 
39  // make sure the specified shaders are compiled, linked, and bound
41  const char *vertexCode,
42  const char *fragmentCode,
43  const char *geometryCode);
44 
45  // make sure the specified shaders are compiled, linked, and bound
46  // will increment the reference count on the shaders if it
47  // needs to keep them around
49  std::map<vtkShader::Type,vtkShader *> shaders);
50 
51  // make sure the specified shaders are compiled, linked, and bound
53 
58 
60  virtual void ReleaseGraphicsResources(vtkWindow *win);
61 
63 
65  virtual void ClearLastShaderBound() { this->LastShaderBound = NULL; }
68 
69 protected:
72 
73  // perform System and Output replacments in place. Returns
74  // the number of outputs
75  virtual unsigned int ReplaceShaderValues(
76  std::string &VSSource,
77  std::string &FSSource,
78  std::string &GSSource);
79 
80  virtual vtkShaderProgram* GetShaderProgram(const char *vertexCode,
81  const char *fragmentCode,
82  const char *geometryCode);
84  std::map<vtkShader::Type,vtkShader *> shaders);
86 
87  class Private;
88  Private *Internal;
90 
91 private:
92  vtkOpenGLShaderCache(const vtkOpenGLShaderCache&); // Not implemented.
93  void operator=(const vtkOpenGLShaderCache&); // Not implemented.
94 
95 };
96 
97 #endif
vtkGetObjectMacro
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:232
vtkOpenGLShaderCache::ReadyShaderProgram
virtual vtkShaderProgram * ReadyShaderProgram(vtkShaderProgram *shader)
vtkShader.h
vtkOpenGLShaderCache::ReplaceShaderValues
virtual unsigned int ReplaceShaderValues(std::string &VSSource, std::string &FSSource, std::string &GSSource)
vtkOpenGLShaderCache::ReadyShaderProgram
virtual vtkShaderProgram * ReadyShaderProgram(const char *vertexCode, const char *fragmentCode, const char *geometryCode)
vtkOpenGLShaderCache::ReleaseGraphicsResources
virtual void ReleaseGraphicsResources(vtkWindow *win)
vtkOpenGLShaderCache::GetShaderProgram
virtual vtkShaderProgram * GetShaderProgram(const char *vertexCode, const char *fragmentCode, const char *geometryCode)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkOpenGLShaderCache::LastShaderBound
vtkShaderProgram * LastShaderBound
Definition: vtkOpenGLShaderCache.h:89
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkOpenGLShaderCache::GetShaderProgram
virtual vtkShaderProgram * GetShaderProgram(std::map< vtkShader::Type, vtkShader * > shaders)
vtkOpenGLShaderCache::ReadyShaderProgram
virtual vtkShaderProgram * ReadyShaderProgram(std::map< vtkShader::Type, vtkShader * > shaders)
vtkOpenGLShaderCache::Internal
Private * Internal
Definition: vtkOpenGLShaderCache.h:87
vtkOpenGLShaderCache::~vtkOpenGLShaderCache
~vtkOpenGLShaderCache()
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
vtkgl::shaders
const GLuint * shaders
Definition: vtkgl.h:14179
vtkOpenGLShaderCache::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
vtkOpenGLShaderCache::vtkOpenGLShaderCache
vtkOpenGLShaderCache()
vtkShaderProgram
The ShaderProgram uses one or more Shader objects.
Definition: vtkShaderProgram.h:43
vtkgl::shader
GLuint shader
Definition: vtkgl.h:11982
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkOpenGLShaderCache::ReleaseCurrentShader
void ReleaseCurrentShader()
vtkOpenGLShaderCache
manage Shader Programs within a context
Definition: vtkOpenGLShaderCache.h:33
vtkObject.h
vtkOpenGLShaderCache::BindShader
virtual int BindShader(vtkShaderProgram *shader)
vtkOpenGLShaderCache::New
static vtkOpenGLShaderCache * New()
vtkOpenGLShaderCache::ClearLastShaderBound
virtual void ClearLastShaderBound()
Definition: vtkOpenGLShaderCache.h:65
vtkgl::string
GLsizei const GLchar ** string
Definition: vtkgl.h:12011