From 7a0ce777e5d7e3c5ba562ea1c811c0c3cb17a976 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 8 Jun 2014 18:38:07 +0300 Subject: Add simple shader creation. --- src/render/graphics.h | 3 +++ src/render/modernopenglgraphics.cpp | 14 ++++++++++++++ src/render/modernopenglgraphics.h | 4 ++++ src/render/shaders/shadersmanager.cpp | 7 +++++++ src/render/shaders/shadersmanager.h | 2 ++ 5 files changed, 30 insertions(+) (limited to 'src/render') diff --git a/src/render/graphics.h b/src/render/graphics.h index 08bb7facf..a61c47437 100644 --- a/src/render/graphics.h +++ b/src/render/graphics.h @@ -450,6 +450,9 @@ class Graphics notfinal virtual void deleteArrays() { } + virtual void postInit() + { } + int mWidth; int mHeight; int mActualWidth; diff --git a/src/render/modernopenglgraphics.cpp b/src/render/modernopenglgraphics.cpp index 2b771a2bb..566dec714 100644 --- a/src/render/modernopenglgraphics.cpp +++ b/src/render/modernopenglgraphics.cpp @@ -33,6 +33,9 @@ #include "render/mgl.h" +#include "render/shaders/shaderprogram.h" +#include "render/shaders/shadersmanager.h" + #include "resources/image.h" #include "resources/imagerect.h" #include "resources/openglimagehelper.h" @@ -52,6 +55,7 @@ ModernOpenGLGraphics::ModernOpenGLGraphics() : mShortVertArray(nullptr), mFloatTexArrayCached(nullptr), mShortVertArrayCached(nullptr), + mSimpleProgram(nullptr), mAlphaCached(1.0F), mVpCached(0), mTexture(false), @@ -97,6 +101,16 @@ void ModernOpenGLGraphics::initArrays(const int vertCount) mShortVertArrayCached = new GLshort[sz]; } +void ModernOpenGLGraphics::postInit() +{ + logger->log("Compiling shaders"); + mSimpleProgram = shaders.getSimpleProgram(); + if (mSimpleProgram) + logger->log("Shaders compilation done."); + else + logger->error("Shaders compilation error."); +} + void ModernOpenGLGraphics::deleteArrays() { deleteArraysInternal(); diff --git a/src/render/modernopenglgraphics.h b/src/render/modernopenglgraphics.h index 09edcbd92..75165031f 100644 --- a/src/render/modernopenglgraphics.h +++ b/src/render/modernopenglgraphics.h @@ -46,6 +46,7 @@ #include class NormalOpenGLGraphicsVertexes; +class ShaderProgram; class ModernOpenGLGraphics final : public Graphics { @@ -56,6 +57,8 @@ class ModernOpenGLGraphics final : public Graphics ~ModernOpenGLGraphics(); + void postInit() override final; + #include "render/graphicsdef.hpp" #include "render/openglgraphicsdef.hpp" @@ -67,6 +70,7 @@ class ModernOpenGLGraphics final : public Graphics GLshort *mShortVertArray; GLfloat *mFloatTexArrayCached; GLshort *mShortVertArrayCached; + ShaderProgram *mSimpleProgram; float mAlphaCached; int mVpCached; bool mTexture; diff --git a/src/render/shaders/shadersmanager.cpp b/src/render/shaders/shadersmanager.cpp index e6b5c7181..f9c305d79 100644 --- a/src/render/shaders/shadersmanager.cpp +++ b/src/render/shaders/shadersmanager.cpp @@ -22,6 +22,7 @@ #ifdef USE_OPENGL +#include "configuration.h" #include "logger.h" #include "settings.h" @@ -111,4 +112,10 @@ ShaderProgram *ShadersManager::createProgram(const std::string &vertex, return nullptr; } +ShaderProgram *ShadersManager::getSimpleProgram() +{ + const std::string dir = paths.getStringValue("shaders"); + return createProgram(dir + paths.getStringValue("simpleVertexShader"), + dir + paths.getStringValue("simpleFragmentShader")); +} #endif diff --git a/src/render/shaders/shadersmanager.h b/src/render/shaders/shadersmanager.h index ba7d26438..50e714aba 100644 --- a/src/render/shaders/shadersmanager.h +++ b/src/render/shaders/shadersmanager.h @@ -39,6 +39,8 @@ class ShadersManager final ShaderProgram *createProgram(const std::string &vertex, const std::string &fragment) A_WARN_UNUSED; + + ShaderProgram *getSimpleProgram(); }; extern ShadersManager shaders; -- cgit v1.2.3-70-g09d2