#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(). |
1.3.6