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 vtkShaderDeviceAdapter2; 00032 class vtkGLSLShaderDeviceAdapter2; 00033 00034 class VTK_RENDERING_EXPORT vtkOpenGLProperty : public vtkProperty 00035 { 00036 public: 00037 static vtkOpenGLProperty *New(); 00038 vtkTypeMacro(vtkOpenGLProperty,vtkProperty); 00039 virtual void PrintSelf(ostream& os, vtkIndent indent); 00040 00042 void Render(vtkActor *a, vtkRenderer *ren); 00043 00045 void BackfaceRender(vtkActor *a, vtkRenderer *ren); 00046 00047 //BTX 00049 00051 virtual void PostRender(vtkActor *a, 00052 vtkRenderer *r); 00054 00058 virtual void ReleaseGraphicsResources(vtkWindow *win); 00059 00061 00063 vtkGetObjectMacro(PropProgram,vtkShaderProgram2); 00064 void SetPropProgram(vtkShaderProgram2 *); 00066 00068 virtual vtkShaderDeviceAdapter2* GetShaderDeviceAdapter2(); 00069 00071 00072 vtkGetObjectMacro(CurrentShaderProgram2,vtkShaderProgram2); 00073 //ETX 00075 00077 00081 virtual void AddShaderVariable(const char *name,int numVars,int *x); 00082 virtual void AddShaderVariable(const char *name,int numVars,float *x); 00083 virtual void AddShaderVariable(const char *name,int numVars,double *x); 00085 00086 protected: 00087 vtkOpenGLProperty(); 00088 ~vtkOpenGLProperty(); 00089 00091 void LoadMultiTexturingExtensions(vtkRenderer* ren); 00092 00094 virtual void ReadFrameworkMaterial(); 00095 00096 // Owned. Result of merging the shader program of the renderer and the 00097 // PropProgram. 00098 vtkShaderProgram2 *CachedShaderProgram2; 00099 00100 vtkShaderProgram2 *LastRendererShaderProgram2; // just a ref 00101 vtkShaderProgram2 *LastPropProgram; // just a ref 00102 vtkShaderProgram2 *PropProgram; // owned 00103 00104 // Point to CachedShaderProgram2 if Shading is on and the context supports 00105 // it. 00106 vtkShaderProgram2 *CurrentShaderProgram2; 00107 00108 vtkShader2 *DefaultMainVS; 00109 vtkShader2 *DefaultMainFS; 00110 vtkShader2 *DefaultPropVS; 00111 vtkShader2 *DefaultPropFS; 00112 bool UseDefaultMainVS; 00113 bool UseDefaultMainFS; 00114 bool UseDefaultPropVS; 00115 bool UseDefaultPropFS; 00116 vtkGLSLShaderDeviceAdapter2 *ShaderDeviceAdapter2; 00117 00118 00119 private: 00120 vtkOpenGLProperty(const vtkOpenGLProperty&); // Not implemented. 00121 void operator=(const vtkOpenGLProperty&); // Not implemented. 00122 }; 00123 00124 #endif