diff options
Diffstat (limited to 'src/mbgl/gfx/program.hpp')
-rw-r--r-- | src/mbgl/gfx/program.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/mbgl/gfx/program.hpp b/src/mbgl/gfx/program.hpp new file mode 100644 index 0000000000..94ba3b18ef --- /dev/null +++ b/src/mbgl/gfx/program.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include <cstddef> + +namespace mbgl { +namespace gfx { + +class Context; +class DrawMode; +class DepthMode; +class StencilMode; +class ColorMode; +class CullFaceMode; +class DrawScope; +class IndexBuffer; +template <class> class UniformValues; +template <class> class AttributeBindings; +template <class> class TextureBindings; + +template <class Name> +class Program { +protected: + Program() = default; + +public: + virtual ~Program() = default; + + Program(Program&&) = delete; + Program(const Program&) = delete; + Program& operator=(Program&&) = delete; + Program& operator=(const Program&) = delete; + + using AttributeList = typename Name::AttributeList; + using UniformList = typename Name::UniformList; + using TextureList = typename Name::TextureList; + + virtual void draw(Context&, + const DrawMode&, + const DepthMode&, + const StencilMode&, + const ColorMode&, + const CullFaceMode&, + const UniformValues<UniformList>&, + DrawScope&, + const AttributeBindings<AttributeList>&, + const TextureBindings<TextureList>&, + const IndexBuffer&, + std::size_t indexOffset, + std::size_t indexLength) = 0; +}; + +} // namespace gfx +} // namespace mbgl |