48 lines
No EOL
764 B
C++
48 lines
No EOL
764 B
C++
|
|
|
|
#include <Spectre/Graphics/ShaderProgram.h>
|
|
#include <Spectre/Graphics/Texture.h>
|
|
#include <Spectre/Graphics/RenderState.h>
|
|
|
|
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();
|
|
}
|
|
} |