diff --git a/src/Shaders/FlatShader.cpp b/src/Shaders/FlatShader.cpp index 4d6df9a03..69d15c3a0 100644 --- a/src/Shaders/FlatShader.cpp +++ b/src/Shaders/FlatShader.cpp @@ -17,6 +17,7 @@ #include +#include "Extensions.h" #include "Shader.h" namespace Magnum { namespace Shaders { @@ -36,9 +37,31 @@ namespace { } template FlatShader::FlatShader() { - Corrade::Utility::Resource resource("MagnumShaders"); - attachShader(Shader::fromData(Version::GL330, Shader::Type::Vertex, resource.get(ShaderName::Vertex))); - attachShader(Shader::fromData(Version::GL330, Shader::Type::Fragment, resource.get(ShaderName::Fragment))); + Corrade::Utility::Resource rs("MagnumShaders"); + + #ifndef MAGNUM_TARGET_GLES + Version v = Context::current()->supportedVersion({/*Version::GL320, */Version::GL210}); + #else + Version v = Context::current()->supportedVersion({Version::GLES300, Version::GLES200}); + #endif + + Shader vertexShader(v, Shader::Type::Vertex); + vertexShader.addSource(rs.get("compatibility.glsl")); + vertexShader.addSource(rs.get(ShaderName::Vertex)); + attachShader(vertexShader); + + Shader fragmentShader(v, Shader::Type::Fragment); + fragmentShader.addSource(rs.get("compatibility.glsl")); + fragmentShader.addSource(rs.get(ShaderName::Fragment)); + attachShader(fragmentShader); + + #ifndef MAGNUM_TARGET_GLES + if(!Context::current()->isExtensionSupported()) { + #else + if(!Context::current()->isVersionSupported(Version::GLES300)) { + #endif + bindAttributeLocation(Position::Location, "position"); + } link(); diff --git a/src/Shaders/FlatShader2D.frag b/src/Shaders/FlatShader2D.frag index 200b2f88c..bdc52dd38 100644 --- a/src/Shaders/FlatShader2D.frag +++ b/src/Shaders/FlatShader2D.frag @@ -1,6 +1,12 @@ +#ifndef NEW_GLSL +#define fragmentColor gl_FragColor +#endif + uniform vec3 color; +#ifndef NEW_GLSL out vec4 fragmentColor; +#endif void main() { fragmentColor = vec4(color, 1.0); diff --git a/src/Shaders/FlatShader2D.vert b/src/Shaders/FlatShader2D.vert index 0ab2076cf..60355d131 100644 --- a/src/Shaders/FlatShader2D.vert +++ b/src/Shaders/FlatShader2D.vert @@ -1,6 +1,14 @@ +#ifndef NEW_GLSL +#define in attribute +#endif + uniform mat3 transformationProjection; +#ifdef EXPLICIT_ATTRIB_LOCATION layout(location = 0) in vec3 position; +#else +in vec3 position; +#endif void main() { gl_Position.xywz = vec4(transformationProjection*position, 0.0);