diff --git a/src/osg/Shader.cpp b/src/osg/Shader.cpp index 1c0e6766e..3cdf5c1d7 100644 --- a/src/osg/Shader.cpp +++ b/src/osg/Shader.cpp @@ -19,6 +19,8 @@ #include #include +#include +#include #include #include @@ -341,15 +343,46 @@ void Shader::PerContextShader::requestCompile() _isCompiled = false; } +namespace +{ + std::string insertLineNumbers(const std::string& source) + { + if (source.empty()) return source; + + unsigned int lineNum = 1; // Line numbers start at 1 + std::ostringstream ostr; + + std::string::size_type previous_pos = 0; + do + { + std::string::size_type pos = source.find_first_of("\n", previous_pos); + if (pos != std::string::npos) + { + ostr << std::setw(5)<getShaderSource()); osg::notify(osg::INFO) << "\nCompiling " << _shader->getTypename() - << " source:\n" << _shader->getShaderSource() << std::endl; + << " source:\n" << sourceWithLineNumbers << std::endl; GLint compiled = GL_FALSE; const char* sourceText = _shader->getShaderSource().c_str();