RigTransformHardware fix: warn; don't crash if MAX_MATRIX not found

This commit is contained in:
Laurens Voerman 2016-05-25 13:27:06 +02:00
parent 2bdf56cb4b
commit 5c66ecfc99

View File

@ -251,10 +251,16 @@ bool RigTransformHardware::init(RigGeometry& geom)
std::string str = _shader->getShaderSource(); std::string str = _shader->getShaderSource();
std::string toreplace = std::string("MAX_MATRIX"); std::string toreplace = std::string("MAX_MATRIX");
std::size_t start = str.find(toreplace); std::size_t start = str.find(toreplace);
if (std::string::npos != start) {
std::stringstream ss; std::stringstream ss;
ss << getMatrixPaletteUniform()->getNumElements(); ss << getMatrixPaletteUniform()->getNumElements();
str.replace(start, toreplace.size(), ss.str()); str.replace(start, toreplace.size(), ss.str());
_shader->setShaderSource(str); _shader->setShaderSource(str);
}
else
{
OSG_WARN << "MAX_MATRIX not found in Shader! " << str << std::endl;
}
OSG_INFO << "Shader " << str << std::endl; OSG_INFO << "Shader " << str << std::endl;
} }