Browse Source

Blind port of FlatShader to OpenGL 2.1 and OpenGL ES 2.0.

pull/7/head
Vladimír Vondruš 14 years ago
parent
commit
6f6d3d09b2
  1. 29
      src/Shaders/FlatShader.cpp
  2. 6
      src/Shaders/FlatShader2D.frag
  3. 8
      src/Shaders/FlatShader2D.vert

29
src/Shaders/FlatShader.cpp

@ -17,6 +17,7 @@
#include <Utility/Resource.h>
#include "Extensions.h"
#include "Shader.h"
namespace Magnum { namespace Shaders {
@ -36,9 +37,31 @@ namespace {
}
template<std::uint8_t dimensions> FlatShader<dimensions>::FlatShader() {
Corrade::Utility::Resource resource("MagnumShaders");
attachShader(Shader::fromData(Version::GL330, Shader::Type::Vertex, resource.get(ShaderName<dimensions>::Vertex)));
attachShader(Shader::fromData(Version::GL330, Shader::Type::Fragment, resource.get(ShaderName<dimensions>::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<dimensions>::Vertex));
attachShader(vertexShader);
Shader fragmentShader(v, Shader::Type::Fragment);
fragmentShader.addSource(rs.get("compatibility.glsl"));
fragmentShader.addSource(rs.get(ShaderName<dimensions>::Fragment));
attachShader(fragmentShader);
#ifndef MAGNUM_TARGET_GLES
if(!Context::current()->isExtensionSupported<Extensions::GL::ARB::explicit_attrib_location>()) {
#else
if(!Context::current()->isVersionSupported(Version::GLES300)) {
#endif
bindAttributeLocation(Position::Location, "position");
}
link();

6
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);

8
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);

Loading…
Cancel
Save