diff --git a/src/Shaders/AbstractTextShader.h b/src/Shaders/AbstractTextShader.h new file mode 100644 index 000000000..3310bbc58 --- /dev/null +++ b/src/Shaders/AbstractTextShader.h @@ -0,0 +1,58 @@ +#ifndef Magnum_Shaders_AbstractTextShader_h +#define Magnum_Shaders_AbstractTextShader_h +/* + Copyright © 2010, 2011, 2012 Vladimír Vondruš + + This file is part of Magnum. + + Magnum is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + Magnum is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details. +*/ + +/** @file + * @brief Class Magnum::Shaders::AbstractTextShader + */ + +#include "AbstractShaderProgram.h" +#include "Color.h" +#include "DimensionTraits.h" + +namespace Magnum { namespace Shaders { + +/** +@brief Base for text shaders + +@see AbstractTextShader2D, AbstractTextShader3D +*/ +template class AbstractTextShader: public AbstractShaderProgram { + public: + /** @brief Vertex position */ + typedef Attribute<0, typename DimensionTraits::PointType> Position; + + /** @brief Texture coordinates */ + typedef Attribute<1, Vector2> TextureCoordinates; + + enum: GLint { + FontTextureLayer = 16, /**< @brief Layer for font texture */ + }; + + ~AbstractTextShader() = 0; +}; + +template inline AbstractTextShader::~AbstractTextShader() {} + +/** @brief Base for two-dimensional text shaders */ +typedef AbstractTextShader<2> AbstractTextShader2D; + +/** @brief Base for three-dimensional text shader */ +typedef AbstractTextShader<3> AbstractTextShader3D; + +}} + +#endif diff --git a/src/Shaders/CMakeLists.txt b/src/Shaders/CMakeLists.txt index 5ef7001c6..96f1708c7 100644 --- a/src/Shaders/CMakeLists.txt +++ b/src/Shaders/CMakeLists.txt @@ -9,6 +9,7 @@ set(MagnumShaders_SRCS VertexColorShader.cpp ${MagnumShaders_RCS}) set(MagnumShaders_HEADERS + AbstractTextShader.h FlatShader.h PhongShader.h Shaders.h diff --git a/src/Shaders/Shaders.h b/src/Shaders/Shaders.h index 5a36b34f8..846a0c3f1 100644 --- a/src/Shaders/Shaders.h +++ b/src/Shaders/Shaders.h @@ -23,6 +23,10 @@ namespace Magnum { namespace Shaders { +template class AbstractTextShader; +typedef AbstractTextShader<2> AbstractTextShader2D; +typedef AbstractTextShader<3> AbstractTextShader3D; + template class FlatShader; typedef FlatShader<2> FlatShader2D; typedef FlatShader<3> FlatShader3D;