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