diff --git a/projects/msvc12/GLideN64.vcxproj b/projects/msvc12/GLideN64.vcxproj
index cb069de5..122861a6 100644
--- a/projects/msvc12/GLideN64.vcxproj
+++ b/projects/msvc12/GLideN64.vcxproj
@@ -302,6 +302,8 @@
+
+
@@ -429,10 +431,13 @@
true
true
+
+
+
diff --git a/projects/msvc12/GLideN64.vcxproj.filters b/projects/msvc12/GLideN64.vcxproj.filters
index a0ab553f..9c33318b 100644
--- a/projects/msvc12/GLideN64.vcxproj.filters
+++ b/projects/msvc12/GLideN64.vcxproj.filters
@@ -69,6 +69,12 @@
{207de069-1088-4913-84f5-3cf0804928dc}
+
+ {f6f08b9a-17ba-4e14-a73b-bb0c3878811f}
+
+
+ {e67eafa1-5cea-4267-bc12-715e06c744db}
+
@@ -299,6 +305,12 @@
Source Files
+
+ Source Files\Graphics\OpenGL\GLSL
+
+
+ Source Files\Graphics\OpenGL\GLSL
+
@@ -544,8 +556,17 @@
Header Files\Graphics\OpenGL
+
+ Header Files\Graphics
+
Header Files
+
+ Header Files\Graphics\OpenGL\GLSL
+
+
+ Header Files\Graphics\OpenGL\GLSL
+
\ No newline at end of file
diff --git a/src/Graphics/CombinerProgram.h b/src/Graphics/CombinerProgram.h
new file mode 100644
index 00000000..443efae1
--- /dev/null
+++ b/src/Graphics/CombinerProgram.h
@@ -0,0 +1,15 @@
+#pragma once
+#include "CombinerKey.h"
+
+namespace graphics {
+
+ class CombinerProgram
+ {
+ public:
+ virtual ~CombinerProgram() {};
+ virtual void activate() = 0;
+ virtual void update(bool _force) = 0;
+ virtual CombinerKey getKey() const = 0;
+ };
+
+}
diff --git a/src/Graphics/Context.cpp b/src/Graphics/Context.cpp
index 9009c841..3a93bc13 100644
--- a/src/Graphics/Context.cpp
+++ b/src/Graphics/Context.cpp
@@ -68,6 +68,12 @@ void Context::addFrameBufferRenderTarget(const FrameBufferRenderTarget & _params
m_impl->addFrameBufferRenderTarget(_params);
}
+CombinerProgram * Context::createCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key)
+{
+ return m_impl->createCombinerProgram(_color, _alpha, _key);
+
+}
+
bool Context::isMultisamplingSupported() const
{
// TODO
diff --git a/src/Graphics/Context.h b/src/Graphics/Context.h
index 783fe3c0..8a736bdc 100644
--- a/src/Graphics/Context.h
+++ b/src/Graphics/Context.h
@@ -1,8 +1,10 @@
#pragma once
#include
+#include
#include "ObjectHandle.h"
#include "Parameter.h"
+#include "CombinerProgram.h"
#define GRAPHICS_CONTEXT
@@ -79,6 +81,8 @@ namespace graphics {
void addFrameBufferRenderTarget(const FrameBufferRenderTarget & _params);
+ CombinerProgram * createCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key);
+
bool isMultisamplingSupported() const;
private:
diff --git a/src/Graphics/ContextImpl.h b/src/Graphics/ContextImpl.h
index abdef3ff..1c0ebc68 100644
--- a/src/Graphics/ContextImpl.h
+++ b/src/Graphics/ContextImpl.h
@@ -21,6 +21,7 @@ namespace graphics {
virtual void addFrameBufferRenderTarget(const Context::FrameBufferRenderTarget & _params) = 0;
virtual ObjectHandle createRenderbuffer() = 0;
virtual void initRenderbuffer(const Context::InitRenderbufferParams & _params) = 0;
+ virtual CombinerProgram * createCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key) = 0;
};
}
diff --git a/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.cpp b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.cpp
new file mode 100644
index 00000000..d975153b
--- /dev/null
+++ b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.cpp
@@ -0,0 +1,12 @@
+#include "glsl_CombinerProgramBuilder.h"
+
+using namespace opengl::glsl;
+
+CombinerProgramBuilder::CombinerProgramBuilder()
+{
+}
+
+
+CombinerProgramBuilder::~CombinerProgramBuilder()
+{
+}
diff --git a/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h
new file mode 100644
index 00000000..360f3f0f
--- /dev/null
+++ b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h
@@ -0,0 +1,17 @@
+#pragma once
+#include
+#include
+
+namespace opengl {
+namespace glsl {
+
+ class CombinerProgramBuilder
+ {
+ public:
+ CombinerProgramBuilder();
+ ~CombinerProgramBuilder();
+ graphics::CombinerProgram * buildCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key);
+ };
+
+}
+}
\ No newline at end of file
diff --git a/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.cpp b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.cpp
new file mode 100644
index 00000000..b9585e25
--- /dev/null
+++ b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.cpp
@@ -0,0 +1,26 @@
+#include "glsl_CombinerProgramImpl.h"
+
+using namespace opengl::glsl;
+
+CombinerProgramImpl::CombinerProgramImpl()
+{
+}
+
+
+CombinerProgramImpl::~CombinerProgramImpl()
+{
+}
+
+void CombinerProgramImpl::activate()
+{
+}
+
+void CombinerProgramImpl::update(bool _force)
+{
+
+}
+
+CombinerKey CombinerProgramImpl::getKey() const
+{
+ return CombinerKey();
+}
diff --git a/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h
new file mode 100644
index 00000000..23b8c974
--- /dev/null
+++ b/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h
@@ -0,0 +1,19 @@
+#pragma once
+#include
+
+namespace opengl {
+namespace glsl {
+
+ class CombinerProgramImpl : public graphics::CombinerProgram
+ {
+ public:
+ CombinerProgramImpl();
+ ~CombinerProgramImpl();
+
+ void activate() override;
+ void update(bool _force) override;
+ CombinerKey getKey() const override;
+ };
+
+}
+}
\ No newline at end of file
diff --git a/src/Graphics/OpenGLContext/opengl_ContextImpl.cpp b/src/Graphics/OpenGLContext/opengl_ContextImpl.cpp
index 22ab7888..98b34108 100644
--- a/src/Graphics/OpenGLContext/opengl_ContextImpl.cpp
+++ b/src/Graphics/OpenGLContext/opengl_ContextImpl.cpp
@@ -104,3 +104,8 @@ void ContextImpl::addFrameBufferRenderTarget(const graphics::Context::FrameBuffe
{
m_addFramebufferRenderTarget->addFrameBufferRenderTarget(_params);
}
+
+graphics::CombinerProgram * ContextImpl::createCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key)
+{
+ return nullptr;
+}
diff --git a/src/Graphics/OpenGLContext/opengl_ContextImpl.h b/src/Graphics/OpenGLContext/opengl_ContextImpl.h
index 49200a3b..f59943ed 100644
--- a/src/Graphics/OpenGLContext/opengl_ContextImpl.h
+++ b/src/Graphics/OpenGLContext/opengl_ContextImpl.h
@@ -36,6 +36,8 @@ namespace opengl {
void addFrameBufferRenderTarget(const graphics::Context::FrameBufferRenderTarget & _params) override;
+ graphics::CombinerProgram * createCombinerProgram(Combiner & _color, Combiner & _alpha, const CombinerKey & _key) override;
+
private:
std::unique_ptr m_cachedFunctions;
std::unique_ptr m_createTexture;