Renderer/GlslWriter: Add #version directive

This commit is contained in:
Lynix 2017-01-04 12:35:27 +01:00
parent d538a7ddf5
commit f487761940
2 changed files with 15 additions and 1 deletions

View File

@ -30,6 +30,8 @@ namespace Nz
void RegisterFunction(const String& name, ShaderAst::StatementPtr statement, std::initializer_list<ShaderAst::VariablePtr> 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<String, Function> m_functions;
Function* m_currentFunction;
State* m_currentState;
unsigned int m_glslVersion;
};
}

View File

@ -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);