|
From: Tapio V. <aa...@us...> - 2010-11-06 20:15:54
|
Module: performous
Branch: opengl2
Commit: cfe6eff49fddca2f26de2578cecc828d3aea59ea
Author: Tapio Vierros <tap...@gm...>
Date: Sat Nov 6 21:10:53 2010 +0200
Shader object can be accessed from UseShader.
---
game/glshader.hh | 7 +++++--
game/screen_intro.cc | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/game/glshader.hh b/game/glshader.hh
index 1499654..7aa0ec1 100644
--- a/game/glshader.hh
+++ b/game/glshader.hh
@@ -59,13 +59,16 @@ struct Shader: public boost::noncopyable {
/** Temporarily switch shader in a RAII manner. */
struct UseShader {
- UseShader(Shader& new_shader) {
+ UseShader(Shader& new_shader): m_shader(new_shader) {
glGetIntegerv(GL_CURRENT_PROGRAM, &m_old);
- new_shader.bind();
+ m_shader.bind();
}
~UseShader() { glUseProgram(m_old); }
+ /// Access the bound shader
+ Shader& operator()() { return m_shader; }
private:
+ Shader& m_shader;
GLint m_old;
};
diff --git a/game/screen_intro.cc b/game/screen_intro.cc
index ccca31b..283e95b 100644
--- a/game/screen_intro.cc
+++ b/game/screen_intro.cc
@@ -116,7 +116,7 @@ void ScreenIntro::draw() {
{
UseShader s(*ThemeIntro::shader);
float anim = std::abs((((SDL_GetTicks() % 10000) / 10000.f) - 0.5f) * 2.0f);
- ThemeIntro::shader->setUniform("anim", anim);
+ s().setUniform("anim", anim);
theme->bg.draw();
}
if (m_menu.current().image) m_menu.current().image->draw();
|