#include <Cg.h>
Inheritance diagram for CgProgram:
Public Member Functions | |
CgProgram () | |
virtual | ~CgProgram () |
void | setFilename (const string &fn) |
void | initProfile (CGprofile p) |
virtual void | setup () |
Setup, loads fragment program from harddrive. | |
virtual void | enable () |
Enable the fragment program. | |
virtual void | disable () |
Disable the fragment program. | |
virtual CGparameter | parameter (const string &var) |
Read the handle of a parameter of the fragment program. | |
void | setParameter (const CGparameter &p, int n, const float *v) const |
void | setParameter (const string &pname, int n, const float *v) |
Private Attributes | |
CGprogram | _Program |
CGprofile | _Profile |
map< string, CGparameter > | _parameters |
string | _filename |
Base class for Cg fragment programs and vertex programs
Definition at line 107 of file Cg.h.
|
Definition at line 115 of file Cg.cpp. References _Profile, and _Program.
|
|
Definition at line 133 of file Cg.cpp. References _Program.
00134 { 00135 if (_Program != NULL) { 00136 cgDestroyProgram(_Program); 00137 } 00138 } |
|
Disable the fragment program.
Reimplemented in CgFragmentProgram. Definition at line 172 of file Cg.cpp. References _Profile. Referenced by CgFragmentProgram::disable(), and drawTorus().
00173 {
00174 // disable profile
00175 cgGLDisableProfile( _Profile );
00176 }
|
|
Enable the fragment program.
Reimplemented in CgFragmentProgram. Definition at line 164 of file Cg.cpp. References _Profile, and _Program. Referenced by drawTorus(), and CgFragmentProgram::enable().
00165 {
00166 // Use fragment program
00167 cgGLEnableProfile(_Profile);
00168 cgGLBindProgram(_Program);
00169 }
|
|
Definition at line 127 of file Cg.cpp. References _Profile. Referenced by CgFragmentProgram::setup(), and CgVertexProgram::setup().
00128 { 00129 _Profile = p; 00130 } |
|
Read the handle of a parameter of the fragment program.
Definition at line 179 of file Cg.cpp. References _parameters, and _Program. Referenced by CgFragmentProgram::bindTexture(), setParameter(), and CgVertexProgram::setStateMatrixParameter().
00180 { 00181 // First try to find parameter in the map 00182 map<string, CGparameter>::const_iterator it = _parameters.find( var ); 00183 if (it != _parameters.end()) { 00184 return (*it).second; 00185 } 00186 00187 // Obtain parameter handle from Cg 00188 CGparameter p = cgGetNamedParameter(_Program, var.c_str() ); 00189 if (!p) { 00190 printf( "Unable to retrieve program parameter %s, exiting.\n", var.c_str() ); 00191 assert( false ); 00192 } 00193 _parameters[var] = p; 00194 return p; 00195 } |
|
Definition at line 122 of file Cg.cpp. References _filename. Referenced by initTorus().
00123 { 00124 _filename = fn; 00125 } |
|
Definition at line 222 of file Cg.cpp. References parameter(), and setParameter().
00223 { 00224 setParameter( parameter(pname), n,v ); 00225 } |
|
Definition at line 197 of file Cg.cpp. Referenced by drawTorus(), setParameter(), and setProgramMaterialColor().
00198 { 00199 switch( n ) { 00200 case 1: 00201 cgGLSetParameter1fv( p, v ); 00202 break; 00203 case 2: 00204 cgGLSetParameter2fv( p, v ); 00205 break; 00206 case 3: 00207 cgGLSetParameter3fv( p, v ); 00208 break; 00209 case 4: 00210 cgGLSetParameter4fv( p, v ); 00211 break; 00212 case 16: 00213 cgGLSetMatrixParameterfr( p, v ); 00214 break; 00215 default: 00216 printf( "Illegal parameter length.\n" ); 00217 assert( false ); 00218 } 00219 } |
|
Setup, loads fragment program from harddrive. Also performs setup of global objects, if not already initialized Reimplemented in CgFragmentProgram, and CgVertexProgram. Definition at line 143 of file Cg.cpp. References _filename, _parameters, _Profile, _Program, and Cg(). Referenced by CgFragmentProgram::setup(), and CgVertexProgram::setup().
00144 { 00145 if (_Program != NULL) { 00146 cgDestroyProgram(_Program); 00147 _Program = NULL; 00148 } 00149 00150 _Program = cgCreateProgramFromFile(Cg()->shaderContext(), 00151 CG_SOURCE, 00152 _filename.c_str(), 00153 _Profile, NULL, NULL); 00154 if (_Program == NULL) { 00155 printf( "Could not create program %s\n", _filename.c_str() ); 00156 assert( false ); 00157 } 00158 cgGLLoadProgram(_Program); 00159 _parameters.erase( _parameters.begin(), _parameters.end() ); 00160 } |
|
Definition at line 149 of file Cg.h. Referenced by setFilename(), and setup(). |
|
Definition at line 147 of file Cg.h. Referenced by parameter(), and setup(). |
|
Definition at line 144 of file Cg.h. Referenced by CgProgram(), disable(), enable(), initProfile(), and setup(). |
|
Definition at line 142 of file Cg.h. Referenced by CgProgram(), enable(), parameter(), setup(), and ~CgProgram(). |