program->addShader(sitr->second.get());
} else {
ref_ptr<Shader> shader = new Shader(stype);
+ shader->setName(fileName);
if (shader->loadShaderSourceFromFile(fileName)) {
program->addShader(shader.get());
shaderMap.insert(ShaderMap::value_type(skey, shader));
// optimize common uniforms
if (uniformType == Uniform::SAMPLER_2D || uniformType == Uniform::INT)
{
- int val;
- uniform->get(val);
+ int val = 0;
+ uniform->get(val); // 'val' remains unchanged in case of error (Uniform is a non-scalar)
if (uniformType == Uniform::SAMPLER_2D && val == 0
&& name == "texture") {
uniform = texture0;
void valueChanged(SGPropertyNode* node)
{
- _tniq->refreshValidity();
+ if (_tniq.valid())
+ _tniq->refreshValidity();
}
protected:
- osg::ref_ptr<Technique> _tniq;
+ osg::observer_ptr<Technique> _tniq;
};
template<typename T>