[3255] | 1 | #include ".\cgprogram.h"
|
---|
| 2 |
|
---|
| 3 | CgProgram::CgProgram(void)
|
---|
| 4 | {
|
---|
| 5 | m_FragmentProgram=NULL;
|
---|
| 6 | m_VertexProgram=NULL;
|
---|
| 7 | }
|
---|
| 8 |
|
---|
| 9 | CgProgram::~CgProgram(void)
|
---|
| 10 | {
|
---|
| 11 | }
|
---|
| 12 |
|
---|
| 13 | void CgProgram::InitPrograms()
|
---|
| 14 | {
|
---|
| 15 | m_Context=cgCreateContext();
|
---|
| 16 | m_VertexProfile=cgGLGetLatestProfile(CG_GL_VERTEX);
|
---|
| 17 | cgGLSetOptimalOptions(m_VertexProfile);
|
---|
| 18 | m_FragmentProfile=cgGLGetLatestProfile(CG_GL_FRAGMENT);
|
---|
| 19 | cgGLSetOptimalOptions(m_FragmentProfile);
|
---|
| 20 |
|
---|
| 21 | m_VertexProgram=new CGprogram;
|
---|
| 22 | *m_VertexProgram=cgCreateProgramFromFile(m_Context,CG_SOURCE,m_VertexProgramFilename,m_VertexProfile,m_VertexProgramEntry,0);
|
---|
| 23 | cgGLLoadProgram(*m_VertexProgram);
|
---|
| 24 | fprintf(stderr, "Building CgProgram: %s %s \n", m_VertexProgramFilename,m_VertexProgramEntry);
|
---|
| 25 | if(*m_VertexProgram==0)
|
---|
| 26 | {
|
---|
| 27 | fprintf(stderr, "!!!!CG_ERROR: Unable to build program: %s %s :\n", m_VertexProgramFilename,m_VertexProgramEntry);
|
---|
| 28 | fprintf(stderr, " %s \n", cgGetLastListing(m_Context));
|
---|
| 29 | }
|
---|
| 30 |
|
---|
| 31 | m_FragmentProgram=new CGprogram;
|
---|
| 32 |
|
---|
| 33 | const char** arg;
|
---|
| 34 | arg=new const char*[3];
|
---|
| 35 | arg[0]="-ifcvt";
|
---|
| 36 | arg[1]="all";
|
---|
| 37 | arg[2]=NULL;
|
---|
| 38 |
|
---|
| 39 | *m_FragmentProgram=cgCreateProgramFromFile(m_Context,CG_SOURCE,m_FragmentProgramFilename,m_FragmentProfile,m_FragmentProgramEntry,arg);
|
---|
| 40 | cgGLLoadProgram(*m_FragmentProgram);
|
---|
| 41 | fprintf(stderr, "Building CgProgram: %s %s \n", m_FragmentProgramFilename,m_FragmentProgramEntry);
|
---|
| 42 | if(*m_FragmentProgram==0)
|
---|
| 43 | {
|
---|
| 44 | fprintf(stderr, "!!!!CG_ERROR: Unable to build program: %s %s :\n", m_FragmentProgramFilename,m_FragmentProgramEntry);
|
---|
| 45 | fprintf(stderr, " %s \n", cgGetLastListing(m_Context));
|
---|
| 46 | }
|
---|
| 47 | cgGLSetManageTextureParameters(m_Context,true);
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | void CgProgram::Enable()
|
---|
| 51 | {
|
---|
| 52 | if(m_FragmentProgram)
|
---|
| 53 | {
|
---|
| 54 | cgGLEnableProfile(m_FragmentProfile);
|
---|
| 55 | cgGLBindProgram(*m_FragmentProgram);
|
---|
| 56 | }
|
---|
| 57 | if(m_VertexProgram)
|
---|
| 58 | {
|
---|
| 59 | cgGLEnableProfile(m_VertexProfile);
|
---|
| 60 | cgGLBindProgram(*m_VertexProgram);
|
---|
| 61 | }
|
---|
| 62 | }
|
---|
| 63 |
|
---|
| 64 | void CgProgram::Disable()
|
---|
| 65 | {
|
---|
| 66 | if(m_FragmentProgram)
|
---|
| 67 | {
|
---|
| 68 | cgGLDisableProfile(m_FragmentProfile);
|
---|
| 69 | }
|
---|
| 70 | if(m_VertexProgram)
|
---|
| 71 | {
|
---|
| 72 | cgGLDisableProfile(m_VertexProfile);
|
---|
| 73 | }
|
---|
| 74 | }
|
---|
| 75 |
|
---|