00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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
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
00098
00099 vtkShaderProgram2 *CachedShaderProgram2;
00100
00101 vtkShaderProgram2 *LastRendererShaderProgram2;
00102 vtkShaderProgram2 *LastPropProgram;
00103 vtkShaderProgram2 *PropProgram;
00104
00105
00106
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&);
00122 void operator=(const vtkOpenGLProperty&);
00123 };
00124
00125 #endif