diff --git a/src/Magnum/Test/MeshGLTest.cpp b/src/Magnum/Test/MeshGLTest.cpp index 3248676fb..577e07881 100644 --- a/src/Magnum/Test/MeshGLTest.cpp +++ b/src/Magnum/Test/MeshGLTest.cpp @@ -326,10 +326,13 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) rectangle matrices */ #ifndef MAGNUM_TARGET_GLES Shader vert(Version::GL210, Shader::Type::Vertex); + Shader frag(Version::GL210, Shader::Type::Fragment); #elif defined(MAGNUM_TARGET_GLES2) Shader vert(Version::GLES200, Shader::Type::Vertex); + Shader frag(Version::GLES200, Shader::Type::Fragment); #else Shader vert(Version::GLES300, Shader::Type::Vertex); + Shader frag(Version::GLES300, Shader::Type::Fragment); #endif vert.addSource( @@ -344,16 +347,6 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) " valueInterpolated = value;\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" "}\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); - attachShader(vert); - - #ifndef MAGNUM_TARGET_GLES - Shader frag(Version::GL210, Shader::Type::Fragment); - #elif defined(MAGNUM_TARGET_GLES2) - Shader frag(Version::GLES200, Shader::Type::Fragment); - #else - Shader frag(Version::GLES300, Shader::Type::Fragment); - #endif #ifndef MAGNUM_TARGET_GLES3 frag.addSource("varying mediump " + type + " valueInterpolated;\n" @@ -363,7 +356,9 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) "out mediump vec4 result;\n" "void main() { result = " + conversion + "; }\n"); #endif - CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile()); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + attachShader(vert); attachShader(frag); bindAttributeLocation(0, "value"); @@ -375,27 +370,24 @@ FloatShader::FloatShader(const std::string& type, const std::string& conversion) IntegerShader::IntegerShader(const std::string& type) { #ifndef MAGNUM_TARGET_GLES Shader vert(Version::GL300, Shader::Type::Vertex); + Shader frag(Version::GL300, Shader::Type::Fragment); #else Shader vert(Version::GLES300, Shader::Type::Vertex); + Shader frag(Version::GLES300, Shader::Type::Fragment); #endif + vert.addSource("in mediump " + type + " value;\n" "flat out mediump " + type + " valueInterpolated;\n" "void main() {\n" " valueInterpolated = value;\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" "}\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); - attachShader(vert); - - #ifndef MAGNUM_TARGET_GLES - Shader frag(Version::GL300, Shader::Type::Fragment); - #else - Shader frag(Version::GLES300, Shader::Type::Fragment); - #endif frag.addSource("flat in mediump " + type + " valueInterpolated;\n" "out mediump " + type + " result;\n" "void main() { result = valueInterpolated; }\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile()); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + attachShader(vert); attachShader(frag); bindAttributeLocation(0, "value"); @@ -407,20 +399,20 @@ IntegerShader::IntegerShader(const std::string& type) { #ifndef MAGNUM_TARGET_GLES DoubleShader::DoubleShader(const std::string& type, const std::string& outputType, const std::string& conversion) { Shader vert(Version::GL410, Shader::Type::Vertex); + Shader frag(Version::GL410, Shader::Type::Fragment); + vert.addSource("in " + type + " value;\n" "out " + outputType + " valueInterpolated;\n" "void main() {\n" " valueInterpolated = " + conversion + ";\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" "}\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); - attachShader(vert); - - Shader frag(Version::GL410, Shader::Type::Fragment); frag.addSource("in " + outputType + " valueInterpolated;\n" "out " + outputType + " result;\n" "void main() { result = valueInterpolated; }\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile()); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + attachShader(vert); attachShader(frag); bindAttributeLocation(0, "value"); @@ -1037,8 +1029,10 @@ namespace { MultipleShader::MultipleShader() { #ifndef MAGNUM_TARGET_GLES Shader vert(Version::GL210, Shader::Type::Vertex); + Shader frag(Version::GL210, Shader::Type::Fragment); #else Shader vert(Version::GLES200, Shader::Type::Vertex); + Shader frag(Version::GLES200, Shader::Type::Fragment); #endif vert.addSource("attribute mediump vec4 position;\n" @@ -1049,18 +1043,11 @@ MultipleShader::MultipleShader() { " valueInterpolated = position + vec4(normal, 0.0) + vec4(textureCoordinates, 0.0, 0.0);\n" " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n" "}\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(vert.compile()); - attachShader(vert); - - #ifndef MAGNUM_TARGET_GLES - Shader frag(Version::GL210, Shader::Type::Fragment); - #else - Shader frag(Version::GLES200, Shader::Type::Fragment); - #endif - frag.addSource("varying mediump vec4 valueInterpolated;\n" "void main() { gl_FragColor = valueInterpolated; }\n"); - CORRADE_INTERNAL_ASSERT_OUTPUT(frag.compile()); + + CORRADE_INTERNAL_ASSERT_OUTPUT(Shader::compile({vert, frag})); + attachShader(vert); attachShader(frag); bindAttributeLocation(Position::Location, "position");