00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __VERTEX_PROGRAM_ARB_DOT_H
00020 #define __VERTEX_PROGRAM_ARB_DOT_H
00021
00022 #include "stateGLI.h"
00023 #include "pbuffGlift.h"
00024 #include <GL/glew.h>
00025
00026 namespace glift {
00027
00028
00029
00030
00031
00032
00033
00034
00035 class VertexProgARB : public VertexShader
00036 {
00037 public:
00038
00039
00040
00041
00042 VertexProgARB( const char *vertProg,
00043 bool isFileName = false,
00044 PBuffGlift* pbuff=NULL,
00045 bool noload = false);
00046
00047 VertexProgARB( const VertexProgARB &rhs);
00048 VertexProgARB& operator=( const VertexProgARB& rhs );
00049
00050
00051 virtual ~VertexProgARB();
00052
00053 void init();
00054 virtual void reset();
00055 virtual void reload(const char *shader);
00056
00057 virtual void setLocalConstf(unsigned int constNum, const gutz::vec4f& constant);
00058 virtual void setLocalConstd(unsigned int constNum, const gutz::vec4d& constant);
00059
00060 virtual char *getProgText() { return m_vertProg; }
00061 virtual char *getProgFile() { return m_vertProgFile; }
00062 virtual void setProgFile(const char *name);
00063
00064 protected:
00065 virtual void bindDef();
00066 virtual void releaseDef();
00067
00068 private:
00069 char *m_vertProg;
00070 char *m_vertProgFile;
00071 GLuint m_shaderNum;
00072 PBuffGlift* m_pbuff;
00073 int m_maxLocalParams;
00074
00075 void destroy();
00076 void initMembers( const char *vertProg, bool isFileName, GLuint shaderNum, PBuffGlift* pbuff );
00077 void initMembers( const VertexProgARB &rhs);
00078
00079 };
00080
00081 typedef gutz::SmartPtr<VertexProgARB> VertexProgARBSP;
00082
00083 }
00084
00085
00086 #endif
00087