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;