00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00041 #ifndef __vtkShader2_h
00042 #define __vtkShader2_h
00043
00044 #include "vtkObject.h"
00045
00046
00047 enum vtkShader2Type
00048 {
00049 VTK_SHADER_TYPE_VERTEX=0,
00050 VTK_SHADER_TYPE_TESSELLATION_CONTROL=3,
00051 VTK_SHADER_TYPE_TESSELLATION_EVALUATION=4,
00052 VTK_SHADER_TYPE_GEOMETRY=1,
00053 VTK_SHADER_TYPE_FRAGMENT=2
00054 };
00055
00056 class vtkOpenGLRenderWindow;
00057 class vtkUniformVariables;
00058
00059 class VTK_RENDERING_EXPORT vtkShader2 : public vtkObject
00060 {
00061 public:
00062 static vtkShader2 *New();
00063 vtkTypeMacro(vtkShader2,vtkObject);
00064 void PrintSelf(ostream &os, vtkIndent indent);
00065
00067
00068 static bool IsSupported(vtkOpenGLRenderWindow *context);
00069 static bool LoadExtensions(vtkOpenGLRenderWindow *context);
00071
00073
00075 vtkGetStringMacro(SourceCode);
00076 vtkSetStringMacro(SourceCode);
00078
00080
00085 vtkGetMacro(Type,int);
00087
00089
00094 vtkSetMacro(Type,int);
00096
00098 const char *GetTypeAsString();
00099
00103 void Compile();
00104
00107 bool GetLastCompileStatus();
00108
00111 const char *GetLastCompileLog();
00112
00114
00118 void SetContext(vtkOpenGLRenderWindow *context);
00119 vtkGetObjectMacro(Context,vtkOpenGLRenderWindow);
00121
00123 virtual void ReleaseGraphicsResources();
00124
00126
00127 vtkGetMacro(Id,unsigned int);
00129
00131
00133 vtkGetObjectMacro(UniformVariables,vtkUniformVariables);
00134 virtual void SetUniformVariables(vtkUniformVariables *variables);
00136
00137 protected:
00139 vtkShader2();
00140
00142 virtual ~vtkShader2();
00143
00144 char *SourceCode;
00145 int Type;
00146
00147 unsigned int Id;
00148
00149 bool LastCompileStatus;
00150 char *LastCompileLog;
00151 size_t LastCompileLogCapacity;
00152
00153 vtkTimeStamp LastCompileTime;
00154 vtkUniformVariables *UniformVariables;
00155 vtkOpenGLRenderWindow *Context;
00156
00157 bool ExtensionsLoaded;
00158 bool SupportGeometryShader;
00159
00160 private:
00161 vtkShader2(const vtkShader2&);
00162 void operator=(const vtkShader2&);
00163 };
00164
00165 #endif