#include ".\cgprogram.h" CgProgram::CgProgram(void) { m_FragmentProgram=NULL; m_VertexProgram=NULL; } CgProgram::~CgProgram(void) { } void CgProgram::InitPrograms() { m_Context=cgCreateContext(); m_VertexProfile=cgGLGetLatestProfile(CG_GL_VERTEX); cgGLSetOptimalOptions(m_VertexProfile); m_FragmentProfile=cgGLGetLatestProfile(CG_GL_FRAGMENT); cgGLSetOptimalOptions(m_FragmentProfile); m_VertexProgram=new CGprogram; *m_VertexProgram=cgCreateProgramFromFile(m_Context,CG_SOURCE,m_VertexProgramFilename,m_VertexProfile,m_VertexProgramEntry,0); cgGLLoadProgram(*m_VertexProgram); fprintf(stderr, "Building CgProgram: %s %s \n", m_VertexProgramFilename,m_VertexProgramEntry); if(*m_VertexProgram==0) { fprintf(stderr, "!!!!CG_ERROR: Unable to build program: %s %s :\n", m_VertexProgramFilename,m_VertexProgramEntry); fprintf(stderr, " %s \n", cgGetLastListing(m_Context)); } m_FragmentProgram=new CGprogram; const char** arg; arg=new const char*[3]; arg[0]="-ifcvt"; arg[1]="all"; arg[2]=NULL; *m_FragmentProgram=cgCreateProgramFromFile(m_Context,CG_SOURCE,m_FragmentProgramFilename,m_FragmentProfile,m_FragmentProgramEntry,arg); cgGLLoadProgram(*m_FragmentProgram); fprintf(stderr, "Building CgProgram: %s %s \n", m_FragmentProgramFilename,m_FragmentProgramEntry); if(*m_FragmentProgram==0) { fprintf(stderr, "!!!!CG_ERROR: Unable to build program: %s %s :\n", m_FragmentProgramFilename,m_FragmentProgramEntry); fprintf(stderr, " %s \n", cgGetLastListing(m_Context)); } cgGLSetManageTextureParameters(m_Context,true); } void CgProgram::Enable() { if(m_FragmentProgram) { cgGLEnableProfile(m_FragmentProfile); cgGLBindProgram(*m_FragmentProgram); } if(m_VertexProgram) { cgGLEnableProfile(m_VertexProfile); cgGLBindProgram(*m_VertexProgram); } } void CgProgram::Disable() { if(m_FragmentProgram) { cgGLDisableProfile(m_FragmentProfile); } if(m_VertexProgram) { cgGLDisableProfile(m_VertexProfile); } }