Hello Michael,
Hi,
I just realized that it is necessary to commit changes to trigger the call
to the gl update procedure for shader uniforms.
The reason is that in
bool ShaderProgramVariables::updateMapSVariable(const Char8 *name,
const ValueType &value)
and
bool ShaderProgramVariables::updateMapMVariable(const char *name,
const ValueType &value)
the local uniform values are changed, but the appropriate field
(VariableChanged) that should mark changed values is not updated.
The field is only touched if uniforms are added or if the changed callback
is executed.
Can someone explain why this is implemented this way? I temporally added
the access to the VariableChanged field in both methods like this
this->editVariableChanged((*it).second.first) = true;
For now this solves my issue, but I'm not sure if there are any side
effects?! Carsten, Gerrit could you please drop some lines on this?
in general (re-)computation of derived state is delayed until you commit
changes, e.g. when you change a transform the parent bounding boxes are
only marked as dirty on commit changes. I believe the same principle
applies here and without having looked closely at the code I think this is
working as intended.
Cheers,
Carsten