1
0
Fork 0
spectre/source/Graphics/RenderState.cpp

52 lines
799 B
C++

#include <Spectre/Graphics/ShaderProgram.h>
#include <Spectre/Graphics/Texture.h>
#include <Spectre/Graphics/RenderState.h>
namespace sp {
RenderState::RenderState() :
m_texture (0),
m_shader (0)
{
}
RenderState::~RenderState()
{
cleanup();
}
void RenderState::enableTexture(const Texture *texture)
{
// Enable the new texture.
if (texture) {
texture->enable();
}
// No texture selected.
// Must unbind cached texture if set.
else if (m_texture) {
m_texture->disable();
}
m_texture = texture;
}
void RenderState::enableShader(const ShaderProgram *program)
{
m_shader = program;
m_shader->enable();
}
void RenderState::cleanup()
{
// Disable current texture if set.
if (m_texture) {
m_texture->disable();
}
if (m_shader) {
m_shader->disable();
}
}
} // namespace sp