MCPcopy Create free account
hub / github.com/OGRECave/ogre / applyFixedFunctionParams

Method applyFixedFunctionParams

RenderSystems/GL/src/OgreGLRenderSystem.cpp:223–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

221 }
222
223 void GLRenderSystem::applyFixedFunctionParams(const GpuProgramParametersPtr& params, uint16 mask)
224 {
225 bool updateLightPos = false;
226
227 // Autoconstant index is not a physical index
228 for (const auto& ac : params->getAutoConstants())
229 {
230 // Only update needed slots
231 if (ac.variability & mask)
232 {
233 const float* ptr = params->getFloatPointer(ac.physicalIndex);
234 switch(ac.paramType)
235 {
236 case GpuProgramParameters::ACT_WORLD_MATRIX:
237 setWorldMatrix(Matrix4(ptr));
238 break;
239 case GpuProgramParameters::ACT_VIEW_MATRIX:
240 // force light update
241 updateLightPos = true;
242 mask |= GPV_LIGHTS;
243 setViewMatrix(Matrix4(ptr));
244 break;
245 case GpuProgramParameters::ACT_PROJECTION_MATRIX:
246 setProjectionMatrix(Matrix4(ptr));
247 break;
248 case GpuProgramParameters::ACT_SURFACE_AMBIENT_COLOUR:
249 mStateCacheManager->setMaterialAmbient(ptr[0], ptr[1], ptr[2], ptr[3]);
250 break;
251 case GpuProgramParameters::ACT_SURFACE_DIFFUSE_COLOUR:
252 mStateCacheManager->setMaterialDiffuse(ptr[0], ptr[1], ptr[2], ptr[3]);
253 break;
254 case GpuProgramParameters::ACT_SURFACE_SPECULAR_COLOUR:
255 mStateCacheManager->setMaterialSpecular(ptr[0], ptr[1], ptr[2], ptr[3]);
256 break;
257 case GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR:
258 mStateCacheManager->setMaterialEmissive(ptr[0], ptr[1], ptr[2], ptr[3]);
259 break;
260 case GpuProgramParameters::ACT_SURFACE_SHININESS:
261 mStateCacheManager->setMaterialShininess(ptr[0]);
262 break;
263 case GpuProgramParameters::ACT_POINT_PARAMS:
264 mStateCacheManager->setPointSize(ptr[0]);
265 mStateCacheManager->setPointParameters(ptr + 1);
266 break;
267 case GpuProgramParameters::ACT_FOG_PARAMS:
268 glFogf(GL_FOG_DENSITY, ptr[0]);
269 glFogf(GL_FOG_START, ptr[1]);
270 glFogf(GL_FOG_END, ptr[2]);
271 break;
272 case GpuProgramParameters::ACT_FOG_COLOUR:
273 glFogfv(GL_FOG_COLOR, ptr);
274 break;
275 case GpuProgramParameters::ACT_AMBIENT_LIGHT_COLOUR:
276 mStateCacheManager->setLightAmbient(ptr[0], ptr[1], ptr[2]);
277 break;
278 case GpuProgramParameters::ACT_LIGHT_DIFFUSE_COLOUR:
279 glLightfv(GL_LIGHT0 + ac.data, GL_DIFFUSE, ptr);
280 break;

Callers 1

Calls 11

RadiansToDegreesFunction · 0.85
setMaterialAmbientMethod · 0.80
setMaterialDiffuseMethod · 0.80
setMaterialSpecularMethod · 0.80
setMaterialEmissiveMethod · 0.80
setMaterialShininessMethod · 0.80
setLightAmbientMethod · 0.80
transposeMethod · 0.80
Matrix4Class · 0.50
setPointSizeMethod · 0.45
setPointParametersMethod · 0.45

Tested by

no test coverage detected