Changeset 2954 for trunk/packages/vizservers
- Timestamp:
- Apr 9, 2012 7:39:27 PM (12 years ago)
- Location:
- trunk/packages/vizservers/nanovis
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/NvShader.cpp
r2911 r2954 90 90 TRACE("In ~NvShader"); 91 91 if (_cgContext == NULL) { 92 TRACE("Lost Cg context ");92 TRACE("Lost Cg context: vp: %s, fp: %s", _vpFile.c_str(), _fpFile.c_str()); 93 93 } else { 94 94 resetPrograms(); … … 103 103 _cgVP = loadCgSourceProgram(_cgContext, fileName, 104 104 _vertexProfile, entryPoint); 105 _vpFile = fileName; 105 106 } 106 107 … … 112 113 _cgFP = loadCgSourceProgram(_cgContext, fileName, 113 114 _fragmentProfile, entryPoint); 115 _fpFile = fileName; 114 116 } 115 117 … … 117 119 { 118 120 if (_cgVP != NULL) { 121 TRACE("Destroying vertex program: %s\n", _vpFile.c_str()); 119 122 cgDestroyProgram(_cgVP); 120 123 } 121 124 122 125 if (_cgFP != NULL) { 126 TRACE("Destroying fragment program: %s\n", _fpFile.c_str()); 123 127 cgDestroyProgram(_cgFP); 124 128 } -
trunk/packages/vizservers/nanovis/NvShader.h
r2913 r2954 3 3 #define NV_SHADER_H 4 4 5 #include <string> 6 #include <tr1/unordered_map> 7 5 8 #include <GL/glew.h> 6 9 #include <Cg/cg.h> … … 16 19 { 17 20 public: 21 enum NvGLMatrix { 22 MODELVIEW_MATRIX = CG_GL_MODELVIEW_MATRIX, 23 PROJECTION_MATRIX = CG_GL_PROJECTION_MATRIX, 24 MODELVIEW_PROJECTION_MATRIX = CG_GL_MODELVIEW_PROJECTION_MATRIX 25 }; 26 enum NvGLMatrixType { 27 MATRIX_IDENTITY = CG_GL_MATRIX_IDENTITY, 28 MATRIX_INVERSE = CG_GL_MATRIX_INVERSE 29 }; 30 18 31 typedef void NvCgCallbackFunction(void); 19 32 … … 41 54 return cgGetNamedParameter(_cgFP, paramName); 42 55 } 56 ERROR("Unknown fragment program parameter: %s\n", paramName); 43 57 return 0; 44 58 } … … 49 63 return cgGetNamedParameter(_cgVP, paramName); 50 64 } 65 ERROR("Unknown vertex program parameter: %s\n", paramName); 51 66 return 0; 52 67 } 53 68 54 void setTextureParameter(CGparameter param, GLuint texobj) 55 { 69 void setVPParameter1f(const char *name, float val) 70 { 71 CGparameter param = getVPParam(name); 72 if (param == NULL) 73 return; 74 cgSetParameter1f(param, val); 75 } 76 77 void setFPParameter1f(const char *name, float val) 78 { 79 CGparameter param = getFPParam(name); 80 if (param == NULL) 81 return; 82 cgSetParameter1f(param, val); 83 } 84 85 void setVPParameter2f(const char *name, float val1, float val2) 86 { 87 CGparameter param = getVPParam(name); 88 if (param == NULL) 89 return; 90 cgSetParameter2f(param, val1, val2); 91 } 92 93 void setFPParameter2f(const char *name, float val1, float val2) 94 { 95 CGparameter param = getFPParam(name); 96 if (param == NULL) 97 return; 98 cgSetParameter2f(param, val1, val2); 99 } 100 101 void setVPParameter3f(const char *name, float val1, float val2, float val3) 102 { 103 CGparameter param = getVPParam(name); 104 if (param == NULL) 105 return; 106 cgSetParameter3f(param, val1, val2, val3); 107 } 108 109 void setFPParameter3f(const char *name, float val1, float val2, float val3) 110 { 111 CGparameter param = getFPParam(name); 112 if (param == NULL) 113 return; 114 cgSetParameter3f(param, val1, val2, val3); 115 } 116 117 void setVPParameter4f(const char *name, float val1, float val2, float val3, float val4) 118 { 119 CGparameter param = getVPParam(name); 120 if (param == NULL) 121 return; 122 cgSetParameter4f(param, val1, val2, val3, val4); 123 } 124 125 void setFPParameter4f(const char *name, float val1, float val2, float val3, float val4) 126 { 127 CGparameter param = getFPParam(name); 128 if (param == NULL) 129 return; 130 cgSetParameter4f(param, val1, val2, val3, val4); 131 } 132 133 void setVPTextureParameter(const char *name, GLuint texobj, bool enable = true) 134 { 135 CGparameter param = getVPParam(name); 136 if (param == NULL) 137 return; 56 138 cgGLSetTextureParameter(param, texobj); 57 } 58 59 CGprogram getVP() const 60 { 61 return _cgVP; 62 } 63 64 CGprogram getFP() const 65 { 66 return _cgFP; 139 if (enable) 140 cgGLEnableTextureParameter(param); 141 } 142 143 void setFPTextureParameter(const char *name, GLuint texobj, bool enable = true) 144 { 145 CGparameter param = getFPParam(name); 146 if (param == NULL) 147 return; 148 ParameterHashmap::iterator itr = _fpParams.find(name); 149 cgGLSetTextureParameter(param, texobj); 150 if (enable) 151 cgGLEnableTextureParameter(param); 152 } 153 154 void enableVPTextureParameter(const char *name) 155 { 156 CGparameter param = getVPParam(name); 157 if (param == NULL) 158 return; 159 cgGLEnableTextureParameter(param); 160 } 161 162 void enaableFPTextureParameter(const char *name) 163 { 164 CGparameter param = getFPParam(name); 165 if (param == NULL) 166 return; 167 cgGLEnableTextureParameter(param); 168 } 169 170 void disableVPTextureParameter(const char *name) 171 { 172 CGparameter param = getVPParam(name); 173 if (param == NULL) 174 return; 175 cgGLDisableTextureParameter(param); 176 } 177 178 void disableFPTextureParameter(const char *name) 179 { 180 CGparameter param = getFPParam(name); 181 if (param == NULL) 182 return; 183 cgGLDisableTextureParameter(param); 184 } 185 186 void setGLStateMatrixVPParameter(const char *name, NvGLMatrix matrix, NvGLMatrixType type) 187 { 188 CGparameter param = getVPParam(name); 189 if (param == NULL) 190 return; 191 cgGLSetStateMatrixParameter(param, (CGGLenum)matrix, (CGGLenum)type); 192 } 193 194 void setGLStateMatrixFPParameter(const char *name, NvGLMatrix matrix, NvGLMatrixType type) 195 { 196 CGparameter param = getFPParam(name); 197 if (param == NULL) 198 return; 199 cgGLSetStateMatrixParameter(param, (CGGLenum)matrix, (CGGLenum)type); 67 200 } 68 201 … … 126 259 127 260 protected: 261 typedef std::tr1::unordered_map<std::string, CGparameter> ParameterHashmap; 262 263 CGprogram getVP() 264 { 265 return _cgVP; 266 } 267 268 CGprogram getFP() 269 { 270 return _cgFP; 271 } 272 273 CGparameter getVPParam(const char *name) 274 { 275 CGparameter param; 276 ParameterHashmap::iterator itr = _vpParams.find(name); 277 if (itr == _vpParams.end()) { 278 param = getNamedParameterFromVP(name); 279 if (param != NULL) 280 _vpParams[name] = param; 281 else 282 ERROR("Unknown vertex program parameter: %s\n", name); 283 } else { 284 param = itr->second; 285 } 286 return param; 287 } 288 289 CGparameter getFPParam(const char *name) 290 { 291 CGparameter param; 292 ParameterHashmap::iterator itr = _fpParams.find(name); 293 if (itr == _fpParams.end()) { 294 param = getNamedParameterFromFP(name); 295 if (param != NULL) 296 _fpParams[name] = param; 297 else 298 ERROR("Unknown fragment program parameter: %s\n", name); 299 } else { 300 param = itr->second; 301 } 302 return param; 303 } 304 128 305 void resetPrograms(); 129 306 130 307 CGprofile _vertexProfile; 131 308 CGprofile _fragmentProfile; 309 std::string _vpFile; 132 310 CGprogram _cgVP; 311 std::string _fpFile; 133 312 CGprogram _cgFP; 313 ParameterHashmap _vpParams; 314 ParameterHashmap _fpParams; 134 315 135 316 static CGprofile _defaultVertexProfile;
Note: See TracChangeset
for help on using the changeset viewer.