00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkOpenGLProperty.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 =========================================================================*/ 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 vtkTypeRevisionMacro(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(Shader2Collection,vtkShader2Collection); 00063 void SetShader2Collection(vtkShader2Collection *); 00065 00067 00068 vtkGetObjectMacro(ShaderDeviceAdapter2,vtkGLSLShaderDeviceAdapter2); 00070 00072 00073 vtkGetObjectMacro(CurrentShaderProgram2,vtkShaderProgram2); 00074 //ETX 00076 00077 protected: 00078 vtkOpenGLProperty(); 00079 ~vtkOpenGLProperty(); 00080 00082 void LoadMultiTexturingExtensions(vtkRenderer* ren); 00083 00085 virtual void ReadFrameworkMaterial(); 00086 00087 vtkShader2Collection *Shader2Collection; 00088 00089 vtkShaderProgram2 *CachedShaderProgram2; // owned 00090 vtkShaderProgram2 *LastCachedShaderProgram2; // just a ref 00091 vtkShaderProgram2 *PropProgram; // owned 00092 00093 vtkShader2 *DefaultMainVS; 00094 vtkShader2 *DefaultMainFS; 00095 vtkShader2 *DefaultPropVS; 00096 vtkShader2 *DefaultPropFS; 00097 bool UseDefaultMainVS; 00098 bool UseDefaultMainFS; 00099 bool UseDefaultPropVS; 00100 bool UseDefaultPropFS; 00101 vtkGLSLShaderDeviceAdapter2 *ShaderDeviceAdapter2; 00102 00103 vtkShaderProgram2 *CurrentShaderProgram2; // point to PropProgram or CachedShaderProgram2 00104 00105 private: 00106 vtkOpenGLProperty(const vtkOpenGLProperty&); // Not implemented. 00107 void operator=(const vtkOpenGLProperty&); // Not implemented. 00108 }; 00109 00110 #endif