diff --git a/src/Shader.cpp b/src/Shader.cpp index 72777fbae..12d6d1b22 100644 --- a/src/Shader.cpp +++ b/src/Shader.cpp @@ -79,6 +79,14 @@ Shader& Shader::operator=(Shader&& other) { return *this; } +Shader& Shader::addSource(const std::string& source) { + if(_state == State::Initialized) + /* Fix line numbers, so line 41 of third added file is marked as 3(41). + Source 0 is the #version string added in constructor. */ + sources.push_back("#line 1 " + std::to_string(sources.size()) + '\n' + source); + return *this; +} + Shader& Shader::addFile(const std::string& filename) { /* Open file */ std::ifstream file(filename.c_str()); diff --git a/src/Shader.h b/src/Shader.h index 2b5e9936c..b47f4ee33 100644 --- a/src/Shader.h +++ b/src/Shader.h @@ -142,10 +142,7 @@ class MAGNUM_EXPORT Shader { * one source. * @see addFile() */ - inline Shader& addSource(const std::string& source) { - if(_state == State::Initialized) sources.push_back(source); - return *this; - } + Shader& addSource(const std::string& source); /** * @brief Add source file