diff --git a/include/Nazara/Renderer/GlslWriter.hpp b/include/Nazara/Renderer/GlslWriter.hpp index 20e4cacc7..59bfd11e5 100644 --- a/include/Nazara/Renderer/GlslWriter.hpp +++ b/include/Nazara/Renderer/GlslWriter.hpp @@ -30,6 +30,8 @@ namespace Nz void RegisterFunction(const String& name, ShaderAst::StatementPtr statement, std::initializer_list parameters, ShaderAst::ExpressionType ret) override; void RegisterVariable(ShaderAst::VariableType kind, const String& name, ShaderAst::ExpressionType type) override; + void SetGlslVersion(unsigned int version); + void Write(const ShaderAst::AssignOp& node) override; void Write(const ShaderAst::Branch& node) override; void Write(const ShaderAst::BinaryOp& node) override; @@ -69,6 +71,7 @@ namespace Nz std::unordered_map m_functions; Function* m_currentFunction; State* m_currentState; + unsigned int m_glslVersion; }; } diff --git a/src/Nazara/Renderer/GlslWriter.cpp b/src/Nazara/Renderer/GlslWriter.cpp index b1d4dc32a..2cada3704 100644 --- a/src/Nazara/Renderer/GlslWriter.cpp +++ b/src/Nazara/Renderer/GlslWriter.cpp @@ -10,7 +10,8 @@ namespace Nz { GlslWriter::GlslWriter() : m_currentFunction(nullptr), - m_currentState(nullptr) + m_currentState(nullptr), + m_glslVersion(110) { } @@ -25,6 +26,11 @@ namespace Nz node->Register(*this); + // Header + Append("#version "); + AppendLine(String::Number(m_glslVersion)); + AppendLine(); + // Uniforms if (state.m_uniforms.empty()) { @@ -109,6 +115,11 @@ namespace Nz } } + void GlslWriter::SetGlslVersion(unsigned int version) + { + m_glslVersion = version; + } + void GlslWriter::Write(const ShaderAst::NodePtr& node) { node->Visit(*this);