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 |
|
---|