- Timestamp:
- 10/16/08 19:51:16 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderProgram.cpp
r3033 r3034 46 46 void GPUProgramParameters::SetTexture(int idx, unsigned int tex) 47 47 { 48 mTextures.push_back(IntParam(idx, tex)); 48 49 } 49 50 … … 56 57 void GPUProgramParameters::SetValue1f(const string &name, float val) 57 58 { 58 SetValue1f(mProgram->GetParam eter(name), val);59 } 60 61 62 void ShaderProgram::SetValue2f(const string &name, float val1, float val2)63 { 64 SetValue2f(mProgram->GetParam eter(name), val1, val2);59 SetValue1f(mProgram->GetParamIdxByName(name), val); 60 } 61 62 63 void GPUProgramParameters::SetValue2f(const string &name, float val1, float val2) 64 { 65 SetValue2f(mProgram->GetParamIdxByName(name), val1, val2); 65 66 } 66 67 … … 68 69 void GPUProgramParameters::SetValue3f(const string &name, float val1, float val2, float val3) 69 70 { 70 SetValue3f(mProgram->GetParam eter(name), val1, val2, val3);71 SetValue3f(mProgram->GetParamIdxByName(name), val1, val2, val3); 71 72 } 72 73 … … 74 75 void GPUProgramParameters::SetArray1f(const string &name, float *vals, int numElements) 75 76 { 76 SetArray1f(mProgram->GetParam eter(name), numElements, (const float *)vals);77 } 78 79 80 void GPUProgramParameters:: GetParameter(const string &name, float *vals, int numElements)81 { 82 SetArray2f(mProgram->GetParam eter(name, numElements, (const float *)vals);77 SetArray1f(mProgram->GetParamIdxByName(name), vals, numElements); 78 } 79 80 81 void GPUProgramParameters::SetArray2f(const string &name, float *vals, int numElements) 82 { 83 SetArray2f(mProgram->GetParamIdxByName(name), vals, numElements); 83 84 } 84 85 … … 86 87 void GPUProgramParameters::SetArray3f(const string &name, float *vals, int numElements) 87 88 { 88 SetArray3f(mProgram->GetParam eter(name), numElements, (const float *)vals);89 SetArray3f(mProgram->GetParamIdxByName(name), vals, numElements); 89 90 } 90 91 … … 92 93 void GPUProgramParameters::SetMatrix(const string &name, Matrix4x4 *mat) 93 94 { 94 SetMatrix(mProgram->GetParam eter(name), mat);95 SetMatrix(mProgram->GetParamIdxByName(name), mat); 95 96 } 96 97 … … 98 99 void GPUProgramParameters::SetTexture(const string &name, unsigned int tex) 99 100 { 100 SetTexture(mProgram->GetOrCreateParameter(name), tex); 101 } 101 SetTexture(mProgram->GetParamIdxByName(name), tex); 102 } 103 104 105 void GPUProgramParameters::UpdateParameters() 106 { 107 for (size_t i = 0; i < mFloats.size(); ++ i) 108 { 109 const FloatParam &p = mFloats[i]; 110 111 switch (p.mNumComponents) 112 { 113 case 1: 114 mProgram->SetValue1f(p.mIndex, p.mValues[0]); 115 break; 116 case 2: 117 mProgram->SetValue2f(p.mIndex, p.mValues[0], p.mValues[1]); 118 break; 119 case 3: 120 mProgram->SetValue3f(p.mIndex, p.mValues[0], p.mValues[1], p.mValues[2]); 121 break; 122 default: 123 mProgram->SetValue1f(p.mIndex, p.mValues[0]); 124 } 125 } 126 127 for (size_t i = 0; i < mTextures.size(); ++ i) 128 { 129 const IntParam &p = mTextures[i]; 130 mProgram->SetTexture(p.mIndex, p.mValue); 131 } 132 133 for (size_t i = 0; i < mMatrices.size(); ++ i) 134 { 135 const MatrixParam &p = mMatrices[i]; 136 mProgram->SetMatrix(p.mIndex, *p.mValue); 137 } 138 } 139 140 141 142 /********************************************************/ 143 /* ShaderProgram implementation */ 144 /********************************************************/ 102 145 103 146 … … 116 159 if (mProgram) cgGLLoadProgram(mProgram); 117 160 118 mParameters.resize(64); 119 120 for (int i = 0; i < 64; ++ i) 161 const int maxParams = 64; 162 mParameters.resize(maxParams); 163 164 for (int i = 0; i < maxParams; ++ i) 121 165 { 122 166 mParameters[i] = NULL; … … 151 195 CGparameter p = GetOrCreateParameter(name); 152 196 197 mParamHash[name] = idx; 153 198 mParameters[idx] = p; 199 154 200 return p; 155 201 } … … 164 210 { 165 211 p = cgGetNamedParameter(mProgram, name.c_str()); 166 mParamHash[name] = i;167 212 } 168 213 else … … 178 223 CGparameter ShaderProgram::GetParameter(int idx) const 179 224 { 180 CGparameter p = mParameters[idx]; 181 return p; 225 return mParameters[idx]; 182 226 } 183 227 … … 231 275 cgGLSetTextureParameter(p, tex); 232 276 cgGLEnableTextureParameter(p); 277 } 278 279 280 void ShaderProgram::SetValue1f(const string &name, float val) 281 { 282 cgGLSetParameter1f(GetOrCreateParameter(name), val); 283 } 284 285 286 void ShaderProgram::SetValue2f(const string &name, float val1, float val2) 287 { 288 cgGLSetParameter2f(GetOrCreateParameter(name), val1, val2); 289 } 290 291 292 void ShaderProgram::SetValue3f(const string &name, float val1, float val2, float val3) 293 { 294 cgGLSetParameter3f(GetOrCreateParameter(name), val1, val2, val3); 295 } 296 297 298 void ShaderProgram::SetArray1f(const string &name, float *vals, int numElements) 299 { 300 cgGLSetParameterArray1f(GetOrCreateParameter(name), 0, numElements, (const float *)vals); 301 } 302 303 304 void ShaderProgram::SetArray2f(const string &name, float *vals, int numElements) 305 { 306 cgGLSetParameterArray2f(GetOrCreateParameter(name), 0, numElements, (const float *)vals); 307 } 308 309 310 void ShaderProgram::SetArray3f(const string &name, float *vals, int numElements) 311 { 312 cgGLSetParameterArray3f(GetOrCreateParameter(name), 0, numElements, (const float *)vals); 313 } 314 315 316 void ShaderProgram::SetMatrix(const string &name, const Matrix4x4 &mat) 317 { 318 cgGLSetMatrixParameterfc(GetOrCreateParameter(name), (const float *)mat.x); 319 } 320 321 322 void ShaderProgram::SetTexture(const string &name, unsigned int tex) 323 { 324 CGparameter p = GetOrCreateParameter(name); 325 326 cgGLSetTextureParameter(p, tex); 327 cgGLEnableTextureParameter(p); 233 328 234 329 mTextureParams.push_back(p); … … 236 331 237 332 238 int ShaderProgram::GetParameter(const std::string &name) 239 { 240 return mParamHash[name]; 333 int ShaderProgram::GetParamIdxByName(const std::string &name) const 334 { 335 CGParameterMap::const_iterator it = mParamHash.find(name); 336 return (*it).second; 241 337 } 242 338
Note: See TracChangeset
for help on using the changeset viewer.