diff options
Diffstat (limited to 'include/llmr/renderer')
-rw-r--r-- | include/llmr/renderer/painter.hpp | 55 | ||||
-rw-r--r-- | include/llmr/renderer/shader-fill.hpp | 19 | ||||
-rw-r--r-- | include/llmr/renderer/shader-line.hpp | 19 | ||||
-rw-r--r-- | include/llmr/renderer/shader.hpp | 23 |
4 files changed, 116 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 diff --git a/include/llmr/renderer/shader-fill.hpp b/include/llmr/renderer/shader-fill.hpp new file mode 100644 index 0000000000..165266e4b5 --- /dev/null +++ b/include/llmr/renderer/shader-fill.hpp @@ -0,0 +1,19 @@ +#ifndef LLMR_RENDERER_SHADER_FILL +#define LLMR_RENDERER_SHADER_FILL + +#include "shader.hpp" + +namespace llmr { + +class FillShader : public Shader { +public: + FillShader(const GLchar *vertex, const GLchar *fragment); + + GLint a_pos; + GLint u_matrix; + GLint u_color; +}; + +} + +#endif diff --git a/include/llmr/renderer/shader-line.hpp b/include/llmr/renderer/shader-line.hpp new file mode 100644 index 0000000000..60e27146f9 --- /dev/null +++ b/include/llmr/renderer/shader-line.hpp @@ -0,0 +1,19 @@ +#ifndef LLMR_RENDERER_SHADER_LINE +#define LLMR_RENDERER_SHADER_LINE + +#include "shader.hpp" + +namespace llmr { + +class LineShader : public Shader { +public: + LineShader(const GLchar *vertex, const GLchar *fragment); + + GLint a_pos; + GLint u_matrix; + GLint u_color; +}; + +} + +#endif diff --git a/include/llmr/renderer/shader.hpp b/include/llmr/renderer/shader.hpp new file mode 100644 index 0000000000..d178a1d9c8 --- /dev/null +++ b/include/llmr/renderer/shader.hpp @@ -0,0 +1,23 @@ +#ifndef LLMR_RENDERER_SHADER +#define LLMR_RENDERER_SHADER + +#include "../platform/gl.hpp" +#include <vector> + +namespace llmr { + +class Shader { +public: + Shader(const GLchar *vertex, const GLchar *fragment); + ~Shader(); + bool valid; + GLuint program; + std::vector<GLuint> attributes; + +private: + bool compileShader(GLuint *shader, GLenum type, const GLchar *source); +}; + +} + +#endif |