本文整理汇总了C++中ShaderProgram::clearUniformApplyTracking方法的典型用法代码示例。如果您正苦于以下问题:C++ ShaderProgram::clearUniformApplyTracking方法的具体用法?C++ ShaderProgram::clearUniformApplyTracking怎么用?C++ ShaderProgram::clearUniformApplyTracking使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ShaderProgram
的用法示例。
在下文中一共展示了ShaderProgram::clearUniformApplyTracking方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: render
//.........这里部分代码省略.........
if (shaderProgThisEffect != prevShaderProgram)
{
// Reset the 'in use' pointer, and only set it if we have a shader program AND we manage to use it
shaderProgramInUse = NULL;
if (shaderProgThisEffect)
{
// Will fail if program hasn't been linked
if (shaderProgThisEffect->useProgram(oglContext))
{
shaderProgramInUse = shaderProgThisEffect;
}
}
if (!shaderProgramInUse)
{
ShaderProgram::useNoProgram(oglContext);
}
prevShaderProgram = shaderProgThisEffect;
m_shaderProgramChangesCount++;
}
if (shaderProgramInUse)
{
// Apply uniforms for this shader program
// Note order of application here.
// - shader program default uniforms
// - global dynamic uniforms
// - (texture binding uniforms)
// - effect uniforms
// - fixed uniforms
// We would really like the effect's uniforms to be at the very end, but that would give inconsistent
// behavior since the fixed uniforms may get applied also when the effect does NOT change.
shaderProgramInUse->clearUniformApplyTracking();
shaderProgramInUse->applyDefaultUniforms(oglContext);
if (globalUniformSet)
{
shaderProgramInUse->applyActiveUniformsOnly(oglContext, *globalUniformSet);
}
const RenderStateTextureBindings* textureBindings = static_cast<const RenderStateTextureBindings*>(effect->renderStateOfType(RenderState::TEXTURE_BINDINGS));
if (textureBindings)
{
textureBindings->applySamplerTextureUnitUniforms(oglContext, shaderProgramInUse);
}
// Apply the effect's uniform last so that they win in case of clashes
const UniformSet* uniformSet = effect->uniformSet();
if (uniformSet)
{
shaderProgramInUse->applyUniforms(oglContext, *uniformSet);
}
// Still, the fixed ones have to go at the end for consistency
shaderProgramInUse->applyFixedUniforms(oglContext, matrixState);
lastAppliedMatrixStateVersionTick = matrixState.versionTick();
}
}
prevEffect = effect;
}
if (shaderProgramInUse)