#pragma once #include enum ProgramType { PROGRAM_VERTEX, PROGRAM_FRAGMENT }; class CgProgram { public: CgProgram(void); ~CgProgram(void); void SetProgramFiles(char* vertexfile,char* fragmentfile){m_VertexProgramFilename=vertexfile; m_FragmentProgramFilename=fragmentfile;} void SetProgramEntries(char* vertexentry,char* fragmententry){m_VertexProgramEntry=vertexentry; m_FragmentProgramEntry=fragmententry;} void InitPrograms(); void SetVertexParam1f(char* paramname,float param){cgSetParameter1f(cgGetNamedParameter(*m_VertexProgram,paramname),param);} void SetFragmentParam1f(char* paramname,float param){cgSetParameter1f(cgGetNamedParameter(*m_FragmentProgram,paramname),param);} void SetVertexParam2f(char* paramname,float param1,float param2){cgSetParameter2f(cgGetNamedParameter(*m_VertexProgram,paramname),param1,param2);} void SetFragmentParam2f(char* paramname,float param1,float param2){cgSetParameter2f(cgGetNamedParameter(*m_FragmentProgram,paramname),param1,param2);} void SetVertexParam3f(char* paramname,float param1,float param2,float param3){cgSetParameter3f(cgGetNamedParameter(*m_VertexProgram,paramname),param1,param2,param3);} void SetFragmentParam3f(char* paramname,float param1,float param2,float param3){cgSetParameter3f(cgGetNamedParameter(*m_FragmentProgram,paramname),param1,param2,param3);} void SetVertexParam4f(char* paramname,float param1,float param2,float param3,float param4){cgSetParameter4f(cgGetNamedParameter(*m_VertexProgram,paramname),param1,param2,param3,param4);} void SetFragmentParam4f(char* paramname,float param1,float param2,float param3,float param4){cgSetParameter4f(cgGetNamedParameter(*m_FragmentProgram,paramname),param1,param2,param3,param4);} void SetVertexTexParam(char* param,unsigned int TexID) { cgGLSetTextureParameter(cgGetNamedParameter(*m_VertexProgram,param),TexID); } void SetFragmentTexParam(char* param,unsigned int TexID) { cgGLSetTextureParameter(cgGetNamedParameter(*m_FragmentProgram,param),TexID); } void DisableFragmentTexParam(char* param) { cgGLDisableTextureParameter(cgGetNamedParameter(*m_FragmentProgram,param)); } void DisableVertexTexParam(char* param) { cgGLDisableTextureParameter(cgGetNamedParameter(*m_VertexProgram,param)); } char* m_FragmentProgramFilename; char* m_VertexProgramFilename; char* m_FragmentProgramEntry; char* m_VertexProgramEntry; CGcontext m_Context; CGprogram *m_VertexProgram; CGprogram *m_FragmentProgram; CGprofile m_VertexProfile, m_FragmentProfile; void Enable(); void Disable(); };