summaryrefslogtreecommitdiff
path: root/include/llmr/renderer/painter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/llmr/renderer/painter.hpp')
-rw-r--r--include/llmr/renderer/painter.hpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/include/llmr/renderer/painter.hpp b/include/llmr/renderer/painter.hpp
new file mode 100644
index 0000000000..ac6012b0d0
--- /dev/null
+++ b/include/llmr/renderer/painter.hpp
@@ -0,0 +1,55 @@
+#ifndef LLMR_RENDERER_PAINTER
+#define LLMR_RENDERER_PAINTER
+
+#include "../platform/gl.hpp"
+
+#include "shader-fill.hpp"
+#include "shader-line.hpp"
+
+namespace llmr {
+
+class platform;
+class transform;
+class tile;
+
+class painter {
+public:
+ painter(class platform *platform);
+
+ void setup();
+ void teardown();
+
+ void resize(GLuint new_width, GLuint new_height);
+ void viewport();
+
+
+ void clear();
+ void render(tile *tile);
+
+ void switchShader(Shader *shader, float matrix[16]);
+ void setTransform(transform *transform);
+
+private:
+ void setupShaders();
+ void changeMatrix();
+
+public:
+
+private:
+ platform *platform;
+ transform *transform;
+ GLuint width, height;
+ GLfloat matrix[16];
+
+ Shader *currentShader;
+ FillShader *fillShader;
+ LineShader *lineShader;
+
+ GLuint vertexArray;
+ GLuint triangleVertexBuffer;
+ GLuint fillVertexBuffer;
+};
+
+}
+
+#endif