70 lines
1.7 KiB
C++
70 lines
1.7 KiB
C++
// Copyright (C) 2013 Jérôme Leclercq
|
|
// This file is part of the "Nazara Engine - Graphics module"
|
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
|
|
|
#include <Nazara/Graphics/TextureBackground.hpp>
|
|
#include <Nazara/Renderer/Renderer.hpp>
|
|
#include <Nazara/Renderer/ShaderProgramManager.hpp>
|
|
#include <memory>
|
|
#include <Nazara/Graphics/Debug.hpp>
|
|
|
|
namespace
|
|
{
|
|
NzRenderStates BuildRenderStates()
|
|
{
|
|
NzRenderStates states;
|
|
states.parameters[nzRendererParameter_DepthBuffer] = false;
|
|
|
|
return states;
|
|
}
|
|
}
|
|
|
|
NzTextureBackground::NzTextureBackground()
|
|
{
|
|
NzShaderProgramManagerParams params;
|
|
params.target = nzShaderTarget_FullscreenQuad;
|
|
params.flags = 0;
|
|
params.fullscreenQuad.alphaMapping = false;
|
|
params.fullscreenQuad.alphaTest = false;
|
|
params.fullscreenQuad.diffuseMapping = true;
|
|
|
|
m_program = NzShaderProgramManager::Get(params);
|
|
}
|
|
|
|
NzTextureBackground::NzTextureBackground(NzTexture* texture) :
|
|
NzTextureBackground()
|
|
{
|
|
m_texture = texture;
|
|
}
|
|
|
|
void NzTextureBackground::Draw(const NzScene* scene) const
|
|
{
|
|
NazaraUnused(scene);
|
|
|
|
static NzRenderStates states(BuildRenderStates());
|
|
|
|
m_program->SendColor(m_program->GetUniformLocation(nzShaderUniform_MaterialDiffuse), NzColor::White);
|
|
m_program->SendInteger(m_program->GetUniformLocation(nzShaderUniform_MaterialDiffuseMap), 0);
|
|
|
|
NzRenderer::SetRenderStates(states);
|
|
NzRenderer::SetShaderProgram(m_program);
|
|
NzRenderer::SetTexture(0, m_texture);
|
|
|
|
NzRenderer::DrawFullscreenQuad();
|
|
}
|
|
|
|
nzBackgroundType NzTextureBackground::GetBackgroundType() const
|
|
{
|
|
return nzBackgroundType_Texture;
|
|
}
|
|
|
|
NzTexture* NzTextureBackground::GetTexture() const
|
|
{
|
|
return m_texture;
|
|
}
|
|
|
|
void NzTextureBackground::SetTexture(NzTexture* texture)
|
|
{
|
|
m_texture = texture;
|
|
}
|