VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkOpenGLProperty.h 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 =========================================================================*/ 00022 #ifndef __vtkOpenGLProperty_h 00023 #define __vtkOpenGLProperty_h 00024 00025 #include "vtkProperty.h" 00026 00027 class vtkOpenGLRenderer; 00028 class vtkShader2; 00029 class vtkShader2Collection; 00030 class vtkShaderProgram2; 00031 class vtkGLSLShaderDeviceAdapter2; 00032 00033 class VTK_RENDERING_EXPORT vtkOpenGLProperty : public vtkProperty 00034 { 00035 public: 00036 static vtkOpenGLProperty *New(); 00037 vtkTypeMacro(vtkOpenGLProperty,vtkProperty); 00038 virtual void PrintSelf(ostream& os, vtkIndent indent); 00039 00041 void Render(vtkActor *a, vtkRenderer *ren); 00042 00044 void BackfaceRender(vtkActor *a, vtkRenderer *ren); 00045 00046 //BTX 00048 00050 virtual void PostRender(vtkActor *a, 00051 vtkRenderer *r); 00053 00057 virtual void ReleaseGraphicsResources(vtkWindow *win); 00058 00060 00062 vtkGetObjectMacro(PropProgram,vtkShaderProgram2); 00063 void SetPropProgram(vtkShaderProgram2 *); 00065 00067 00068 vtkGetObjectMacro(ShaderDeviceAdapter2,vtkGLSLShaderDeviceAdapter2); 00070 00072 00073 vtkGetObjectMacro(CurrentShaderProgram2,vtkShaderProgram2); 00074 //ETX 00076 00078 00082 virtual void AddShaderVariable(const char *name,int numVars,int *x); 00083 virtual void AddShaderVariable(const char *name,int numVars,float *x); 00084 virtual void AddShaderVariable(const char *name,int numVars,double *x); 00086 00087 protected: 00088 vtkOpenGLProperty(); 00089 ~vtkOpenGLProperty(); 00090 00092 void LoadMultiTexturingExtensions(vtkRenderer* ren); 00093 00095 virtual void ReadFrameworkMaterial(); 00096 00097 // Owned. Result of merging the shader program of the renderer and the 00098 // PropProgram. 00099 vtkShaderProgram2 *CachedShaderProgram2; 00100 00101 vtkShaderProgram2 *LastRendererShaderProgram2; // just a ref 00102 vtkShaderProgram2 *LastPropProgram; // just a ref 00103 vtkShaderProgram2 *PropProgram; // owned 00104 00105 // Point to CachedShaderProgram2 if Shading is on and the context supports 00106 // it. 00107 vtkShaderProgram2 *CurrentShaderProgram2; 00108 00109 vtkShader2 *DefaultMainVS; 00110 vtkShader2 *DefaultMainFS; 00111 vtkShader2 *DefaultPropVS; 00112 vtkShader2 *DefaultPropFS; 00113 bool UseDefaultMainVS; 00114 bool UseDefaultMainFS; 00115 bool UseDefaultPropVS; 00116 bool UseDefaultPropFS; 00117 vtkGLSLShaderDeviceAdapter2 *ShaderDeviceAdapter2; 00118 00119 00120 private: 00121 vtkOpenGLProperty(const vtkOpenGLProperty&); // Not implemented. 00122 void operator=(const vtkOpenGLProperty&); // Not implemented. 00123 }; 00124 00125 #endif