diff options
author | Johannes Schickel | 2016-01-04 07:07:37 +0100 |
---|---|---|
committer | Johannes Schickel | 2016-03-16 20:29:26 +0100 |
commit | 5498982a3754edccb498521587c553e0ecbe7328 (patch) | |
tree | 956bfaacf060f28b83af030d3a0063abb2fd72ef /backends/graphics/opengl/shader.h | |
parent | f5f1b6eba0d409abcda2a3c037a177d6f6e41a2e (diff) | |
download | scummvm-rg350-5498982a3754edccb498521587c553e0ecbe7328.tar.gz scummvm-rg350-5498982a3754edccb498521587c553e0ecbe7328.tar.bz2 scummvm-rg350-5498982a3754edccb498521587c553e0ecbe7328.zip |
OPENGL: Introduce ShaderManager to handle builtin shaders.
Diffstat (limited to 'backends/graphics/opengl/shader.h')
-rw-r--r-- | backends/graphics/opengl/shader.h | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/backends/graphics/opengl/shader.h b/backends/graphics/opengl/shader.h index 98a2a2859b..e5dbcacfad 100644 --- a/backends/graphics/opengl/shader.h +++ b/backends/graphics/opengl/shader.h @@ -28,6 +28,7 @@ #if !USE_FORCED_GLES #include "common/str.h" +#include "common/singleton.h" namespace OpenGL { @@ -37,9 +38,6 @@ enum { kColorAttribLocation = 2 }; -extern const char *const g_defaultVertexShader; -extern const char *const g_defaultFragmentShader; - class Shader { public: Shader(const Common::String &vertex, const Common::String &fragment); @@ -121,8 +119,47 @@ protected: static GLshader compileShader(const char *source, GLenum shaderType); }; +class ShaderManager : public Common::Singleton<ShaderManager> { +public: + enum ShaderUsage { + /** Default shader implementing the GL fixed-function pipeline. */ + kDefault = 0, + + /** CLUT8 look up shader. */ + kCLUT8LookUp, + + /** Number of built-in shaders. Should not be used for query. */ + kMaxUsages + }; + + /** + * Notify shader manager about context destruction. + */ + void notifyDestroy(); + + /** + * Notify shader manager about context creation. + */ + void notifyCreate(); + + /** + * Query a built-in shader. + */ + Shader *query(ShaderUsage shader) const; + +private: + friend class Common::Singleton<SingletonBaseType>; + ShaderManager(); + ~ShaderManager(); + + Shader *_builtIn[kMaxUsages]; +}; + } // End of namespace OpenGL +/** Shortcut for accessing the font manager. */ +#define ShaderMan (OpenGL::ShaderManager::instance()) + #endif // !USE_FORCED_GLES #endif |