summaryrefslogtreecommitdiff
path: root/src/render/shaders
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-12-10 02:59:18 +0300
committerAndrei Karas <akaras@inbox.ru>2015-12-10 15:12:12 +0300
commit740b10240414ae3b7c37ee21fd131ffdb296b2b9 (patch)
treeb1c03b4c9eeb8790033c79cece88162597711fbb /src/render/shaders
parent54d0234c8334bcd61ffb655a57e6147fd279b9e1 (diff)
downloadmv-740b10240414ae3b7c37ee21fd131ffdb296b2b9.tar.gz
mv-740b10240414ae3b7c37ee21fd131ffdb296b2b9.tar.bz2
mv-740b10240414ae3b7c37ee21fd131ffdb296b2b9.tar.xz
mv-740b10240414ae3b7c37ee21fd131ffdb296b2b9.zip
Add function for load OpenGL ES 2 shaders.
Diffstat (limited to 'src/render/shaders')
-rw-r--r--src/render/shaders/shadersmanager.cpp19
-rw-r--r--src/render/shaders/shadersmanager.h5
2 files changed, 20 insertions, 4 deletions
diff --git a/src/render/shaders/shadersmanager.cpp b/src/render/shaders/shadersmanager.cpp
index 345093074..c79abe2cc 100644
--- a/src/render/shaders/shadersmanager.cpp
+++ b/src/render/shaders/shadersmanager.cpp
@@ -63,7 +63,8 @@ Shader *ShadersManager::createShader(const unsigned int type,
}
ShaderProgram *ShadersManager::createProgram(const std::string &vertex,
- const std::string &fragment)
+ const std::string &fragment,
+ const bool isNewShader)
{
Shader *const vertexShader = static_cast<Shader*>(
resourceManager->getShader(GL_VERTEX_SHADER, vertex));
@@ -89,7 +90,10 @@ ShaderProgram *ShadersManager::createProgram(const std::string &vertex,
mglAttachShader(programId, vertexShader->getShaderId());
mglAttachShader(programId, fragmentShader->getShaderId());
- mglBindFragDataLocation(programId, 0, "outColor");
+ if (isNewShader)
+ mglBindFragDataLocation(programId, 0, "outColor");
+ else
+ mglBindAttribLocation(programId, 0, "position");
mglLinkProgram(programId);
GLint isLinked = 0;
mglGetProgramiv(programId, GL_LINK_STATUS, &isLinked);
@@ -122,7 +126,16 @@ ShaderProgram *ShadersManager::getSimpleProgram()
{
const std::string dir = paths.getStringValue("shaders");
return createProgram(dir + paths.getStringValue("simpleVertexShader"),
- dir + paths.getStringValue("simpleFragmentShader"));
+ dir + paths.getStringValue("simpleFragmentShader"),
+ true);
+}
+
+ShaderProgram *ShadersManager::getGles2Program()
+{
+ const std::string dir = paths.getStringValue("shaders");
+ return createProgram(dir + paths.getStringValue("gles2VertexShader"),
+ dir + paths.getStringValue("gles2FragmentShader"),
+ false);
}
#endif
diff --git a/src/render/shaders/shadersmanager.h b/src/render/shaders/shadersmanager.h
index 6c71dba17..b0cf56159 100644
--- a/src/render/shaders/shadersmanager.h
+++ b/src/render/shaders/shadersmanager.h
@@ -37,10 +37,13 @@ class ShadersManager final
const std::string &fileName) A_WARN_UNUSED;
ShaderProgram *createProgram(const std::string &vertex,
- const std::string &fragment)
+ const std::string &fragment,
+ const bool isNewShader)
A_WARN_UNUSED;
ShaderProgram *getSimpleProgram();
+
+ ShaderProgram *getGles2Program();
};
extern ShadersManager shaders;