OpenGLRenderer: Fix Y flipping for FBOs
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <Nazara/OpenGLRenderer/Utils.hpp>
|
||||
#include <Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.hpp>
|
||||
#include <Nazara/OpenGLRenderer/OpenGLShaderStage.hpp>
|
||||
#include <Nazara/Shader/GlslWriter.hpp>
|
||||
#include <cassert>
|
||||
#include <stdexcept>
|
||||
#include <Nazara/OpenGLRenderer/Debug.hpp>
|
||||
@@ -14,7 +15,8 @@
|
||||
namespace Nz
|
||||
{
|
||||
OpenGLRenderPipeline::OpenGLRenderPipeline(OpenGLDevice& device, RenderPipelineInfo pipelineInfo) :
|
||||
m_pipelineInfo(std::move(pipelineInfo))
|
||||
m_pipelineInfo(std::move(pipelineInfo)),
|
||||
m_isYFlipped(false)
|
||||
{
|
||||
if (!m_program.Create(device))
|
||||
throw std::runtime_error("failed to create program");
|
||||
@@ -30,6 +32,10 @@ namespace Nz
|
||||
std::string errLog;
|
||||
if (!m_program.GetLinkStatus(&errLog))
|
||||
throw std::runtime_error("failed to link program: " + errLog);
|
||||
|
||||
m_flipYUniformLocation = m_program.GetUniformLocation(GlslWriter::GetFlipYUniformName());
|
||||
if (m_flipYUniformLocation != -1)
|
||||
m_program.Uniform(m_flipYUniformLocation, 1.f);
|
||||
}
|
||||
|
||||
void OpenGLRenderPipeline::Apply(const GL::Context& context) const
|
||||
@@ -37,4 +43,13 @@ namespace Nz
|
||||
context.UpdateStates(m_pipelineInfo);
|
||||
context.BindProgram(m_program.GetObjectId()); //< Bind program after states
|
||||
}
|
||||
|
||||
void OpenGLRenderPipeline::FlipY(bool shouldFlipY) const
|
||||
{
|
||||
if (m_isYFlipped != shouldFlipY)
|
||||
{
|
||||
m_program.Uniform(m_flipYUniformLocation, (shouldFlipY) ? -1.f : 1.f);
|
||||
m_isYFlipped = shouldFlipY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user