From 53039793157ceb1ae91461de85f970c233860340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 28 Jul 2014 23:03:08 +0200 Subject: [PATCH] Shaders: make the helper function inline. Will be used outside of the library and I don't want to create another inter-library dependency. --- src/Magnum/Shaders/CMakeLists.txt | 2 - .../CreateCompatibilityShader.cpp | 58 ------------------- .../CreateCompatibilityShader.h | 27 ++++++++- 3 files changed, 26 insertions(+), 61 deletions(-) delete mode 100644 src/Magnum/Shaders/Implementation/CreateCompatibilityShader.cpp diff --git a/src/Magnum/Shaders/CMakeLists.txt b/src/Magnum/Shaders/CMakeLists.txt index 6ffa51558..4099261d8 100644 --- a/src/Magnum/Shaders/CMakeLists.txt +++ b/src/Magnum/Shaders/CMakeLists.txt @@ -34,8 +34,6 @@ set(MagnumShaders_SRCS Vector.cpp VertexColor.cpp - Implementation/CreateCompatibilityShader.cpp - ${MagnumShaders_RCS}) set(MagnumShaders_HEADERS diff --git a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.cpp b/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.cpp deleted file mode 100644 index 04accbfa1..000000000 --- a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - This file is part of Magnum. - - Copyright © 2010, 2011, 2012, 2013, 2014 - Vladimír Vondruš - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. -*/ - -#include "CreateCompatibilityShader.h" - -#include - -#include "Magnum/Context.h" -#include "Magnum/Extensions.h" - -namespace Magnum { namespace Shaders { namespace Implementation { - -Shader createCompatibilityShader(const Version version, const Shader::Type type) { - Shader shader(version, type); - - #ifndef MAGNUM_TARGET_GLES - if(Context::current()->isExtensionDisabled(version)) - shader.addSource("#define DISABLE_GL_ARB_explicit_attrib_location\n"); - if(Context::current()->isExtensionDisabled(version)) - shader.addSource("#define DISABLE_GL_ARB_shading_language_420pack\n"); - if(Context::current()->isExtensionDisabled(version)) - shader.addSource("#define DISABLE_GL_ARB_explicit_uniform_location\n"); - #endif - - /* My Android emulator (running on NVidia) doesn't define GL_ES - preprocessor macro, thus *all* the stock shaders fail to compile */ - /** @todo remove this when Android emulator is sane */ - #ifdef CORRADE_TARGET_ANDROID - shader.addSource("#ifndef GL_ES\n#define GL_ES 1\n#endif\n"); - #endif - - shader.addSource(Utility::Resource("MagnumShaders").get("compatibility.glsl")); - return shader; -} - -}}} diff --git a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h b/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h index bb8790629..b3cd0322f 100644 --- a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h +++ b/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h @@ -25,11 +25,36 @@ DEALINGS IN THE SOFTWARE. */ +#include + +#include "Magnum/Context.h" +#include "Magnum/Extensions.h" #include "Magnum/Shader.h" namespace Magnum { namespace Shaders { namespace Implementation { -Shader createCompatibilityShader(Version version, Shader::Type type); +inline Shader createCompatibilityShader(Version version, Shader::Type type) { + Shader shader(version, type); + + #ifndef MAGNUM_TARGET_GLES + if(Context::current()->isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_explicit_attrib_location\n"); + if(Context::current()->isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_shading_language_420pack\n"); + if(Context::current()->isExtensionDisabled(version)) + shader.addSource("#define DISABLE_GL_ARB_explicit_uniform_location\n"); + #endif + + /* My Android emulator (running on NVidia) doesn't define GL_ES + preprocessor macro, thus *all* the stock shaders fail to compile */ + /** @todo remove this when Android emulator is sane */ + #ifdef CORRADE_TARGET_ANDROID + shader.addSource("#ifndef GL_ES\n#define GL_ES 1\n#endif\n"); + #endif + + shader.addSource(Utility::Resource("MagnumShaders").get("compatibility.glsl")); + return shader; +} }}}