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