summaryrefslogtreecommitdiff
path: root/src/mbgl/gfx/program.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/gfx/program.hpp')
-rw-r--r--src/mbgl/gfx/program.hpp53
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