00001 #ifndef __SHADERMANAGER__H__ 00002 #define __SHADERMANAGER__H__ 00003 00004 #include <Cg/cg.h> 00005 #include <Cg/cgGL.h> 00006 00007 #include "../Util/Singleton.h" 00008 00009 class Light; 00010 00011 class ShaderManager : public Singleton<ShaderManager> 00012 { 00013 friend class Singleton<ShaderManager>; 00014 00015 public: 00016 enum SHADER_PARAMETER 00017 { 00018 SHADER_BACKGROUND_MAP, 00019 SHADER_ALPHA_MAP, 00020 SHADER_MIN_MAX_MAP, 00021 SHADER_COLOR_MAP, 00022 }; 00023 00024 ShaderManager(void); 00025 ~ShaderManager(void); 00026 00028 void Init(void); 00029 00031 void EnableShader(const char* passName = ""); 00032 00034 void DisableShader(); 00035 00037 void EnableTextureParameter(SHADER_PARAMETER parameter); 00038 00040 void SetParameterTexture(SHADER_PARAMETER parameter, unsigned int texture); 00041 00043 void SetParameter1i(SHADER_PARAMETER parameter, int x); 00044 00046 void SetParameter1f(SHADER_PARAMETER parameter, float x); 00047 00049 void SetParameter2fv(SHADER_PARAMETER parameter, const float* v); 00050 00052 void SetParameter3fv(SHADER_PARAMETER parameter, const float* v); 00053 00055 void SetParameter4fv(SHADER_PARAMETER parameter, const float* v); 00056 00058 void SetParameterArray1f(SHADER_PARAMETER parameter, const float* v); 00059 00061 void SetParameterArray2f(SHADER_PARAMETER parameter, const float* v); 00062 00064 void SetMatrixParameterfc(SHADER_PARAMETER parameter, float* matrix); 00065 00067 void Exit(void); 00068 00069 private: 00070 void CheckForCgError(const char *situation); 00071 00072 CGcontext context; 00073 00075 00076 CGeffect cgEffect; 00077 CGtechnique cgTechnique; 00078 CGpass cgPass; 00079 00080 CGparameter shaderBackgroundMap; 00081 CGparameter shaderAlphaMap; 00082 CGparameter shaderMinMaxMap; 00083 CGparameter shaderColorMap; 00084 00085 CGparameter shaderTreeNodePosTexture; 00086 CGparameter shaderNodePosTexSize; 00087 CGparameter shaderControlPolygon; 00088 CGparameter shaderControlPolygonSize; 00089 CGparameter shaderAlpha; 00090 CGparameter shaderBeta; 00091 }; 00092 00093 #endif