• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/Rendering/vtkShaderProgram2.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkShaderProgram2.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00024 #ifndef __vtkShaderProgram2_h
00025 #define __vtkShaderProgram2_h
00026 
00027 #include "vtkObject.h"
00028 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
00029 
00030 class vtkWindow;
00031 class vtkOpenGLRenderWindow;
00032 class vtkOpenGLExtensionManager;
00033 class vtkShaderProgram2Uniforms; // internal
00034 class vtkShader2Collection;
00035 class vtkUniformVariables;
00036 
00037 // Values for GetLastBuildStatus()
00038 enum vtkShaderProgram2BuildStatus
00039 {
00040   // one of the shaders failed to compile
00041   VTK_SHADER_PROGRAM2_COMPILE_FAILED=0,
00042   // all the shaders compiled successfully but the link failed
00043   VTK_SHADER_PROGRAM2_LINK_FAILED=1,
00044   // all the shaders compiled successfully and the link succeeded
00045   VTK_SHADER_PROGRAM2_LINK_SUCCEEDED=2
00046 };
00047 
00048 class VTK_RENDERING_EXPORT vtkShaderProgram2 : public vtkObject
00049 {
00050 public:
00051   static vtkShaderProgram2* New();
00052   vtkTypeRevisionMacro(vtkShaderProgram2, vtkObject);
00053   void PrintSelf(ostream& os, vtkIndent indent);
00054 
00056 
00057   static bool IsSupported(vtkOpenGLRenderWindow *context);
00058   static bool LoadExtensions(vtkOpenGLRenderWindow *context);
00060   
00062 
00067   vtkGetMacro(PrintErrors,bool);
00068   vtkSetMacro(PrintErrors,bool);
00070   
00072 
00076   void SetContext(vtkOpenGLRenderWindow *context);
00077   vtkGetObjectMacro(Context,vtkOpenGLRenderWindow);
00079 
00081 
00083   vtkGetObjectMacro(Shaders,vtkShader2Collection);
00085 
00089   bool HasVertexShaders();
00090   
00094   bool HasFragmentShaders();
00095   
00097   bool HasGeometryShaders();
00098   
00100   bool IsValid();
00101   
00105   void Build();
00106   
00108   void SendUniforms();
00109   
00111 
00113   void PrintActiveUniformVariables(ostream &os,
00114                                    vtkIndent indent);
00116   
00119   void PrintActiveUniformVariablesOnCout();
00120   
00122   bool IsUsed();
00123   
00128   void Use();
00129   
00131   void Restore();
00132   
00135   void RestoreFixedPipeline();
00136 
00143   int GetLastBuildStatus();
00144   
00147   const char *GetLastLinkLog();
00148   
00151   const char *GetLastValidateLog();
00152   
00154   virtual void ReleaseGraphicsResources();
00155 
00159   int GetAttributeLocation(const char *name);
00160   
00162 
00164   vtkGetObjectMacro(UniformVariables,vtkUniformVariables);
00165   virtual void SetUniformVariables(vtkUniformVariables *variables);
00167   
00172   bool DisplayListUnderCreationInCompileMode();
00173   
00174 protected:
00175   vtkShaderProgram2();
00176   virtual ~vtkShaderProgram2();
00177   
00178   unsigned int Id; // actually GLuint. Initial value is 0.
00179   unsigned int SavedId;
00180   
00181   vtkTimeStamp LastLinkTime;
00182   vtkTimeStamp LastSendUniformsTime;
00183   
00184   vtkShaderProgram2Uniforms *Uniforms;
00185   vtkShader2Collection *Shaders;
00186   
00187   int LastBuildStatus; // Initial value is VTK_SHADER_PROGRAM2_COMPILE_FAILED
00188   
00189   char *LastLinkLog; // Initial value is the empty string ""='\0'
00190   size_t LastLinkLogCapacity; // Initial value is 8.
00191   
00192   char *LastValidateLog; // Initial value is the empty string ""='\0'
00193   size_t LastValidateLogCapacity; // Initial value is 8.
00194   
00195   vtkUniformVariables *UniformVariables; // Initial values is an empty list
00196   
00197   bool PrintErrors; // use vtkErrorMacro ?
00198   
00199   vtkOpenGLRenderWindow *Context;
00200   bool ExtensionsLoaded;
00201   
00202 private:
00203   vtkShaderProgram2(const vtkShaderProgram2&); // Not implemented.
00204   void operator=(const vtkShaderProgram2&); // Not implemented.
00205 };
00206 
00207 #endif

Generated by  doxygen 1.7.1