summaryrefslogtreecommitdiff
path: root/themes/deprecated
diff options
context:
space:
mode:
Diffstat (limited to 'themes/deprecated')
-rw-r--r--themes/deprecated/TreeRenderer.cpp57
-rw-r--r--themes/deprecated/TreeRenderer.h36
2 files changed, 93 insertions, 0 deletions
diff --git a/themes/deprecated/TreeRenderer.cpp b/themes/deprecated/TreeRenderer.cpp
new file mode 100644
index 0000000..ef1ed79
--- /dev/null
+++ b/themes/deprecated/TreeRenderer.cpp
@@ -0,0 +1,57 @@
+#include "TreeRenderer.h"
+#include "WebglContext.h"
+#include "mathlib.h"
+#include <GLES2/gl2.h>
+
+const char* TreeRendererVertexShader =
+"attribute vec2 position; \n"
+"attribute vec4 color; \n"
+"uniform mat4 projection; \n"
+"uniform mat4 model; \n"
+"varying lowp vec4 VertexColor; \n"
+"void main() { \n"
+" vec4 fragmentPosition = projection * model * vec4(position.x, position.y, 1, 1); \n"
+" gl_Position = fragmentPosition; \n"
+" VertexColor = color; \n"
+"}";
+
+const char* TreeRendererFragmentShader =
+"varying lowp vec4 VertexColor; \n"
+"void main() { \n"
+" gl_FragColor = VertexColor; \n"
+"}";
+
+void TreeRenderer::load(WebglContext* context) {
+ printf("Compiling TreeRenderer shader...\n");
+ shader = loadShader(TreeRendererVertexShader, TreeRendererFragmentShader);
+
+ useShader(shader);
+ attributes.position = getShaderAttribute(shader, "position");
+ attributes.color = getShaderAttribute(shader, "color");
+ uniforms.projection = getShaderUniform(shader, "projection");
+ uniforms.model = getShaderUniform(shader, "model");
+ projection = Mat4x4().getOrthographicMatrix(0, context->width, 0, context->height);
+
+ printf("TreeRenderer shader compiled.\n");
+}
+
+void TreeRenderer::render(float32 dtSeconds) {
+ timeElapsed += dtSeconds;
+
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_LEQUAL);
+ glDepthMask(GL_TRUE);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_BLEND);
+ glClearColor(clearColor.x, clearColor.y, clearColor.z, clearColor.w);
+ glClearDepth(1.0f);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
+ useShader(shader);
+ setShaderMat4(uniforms.projection, projection);
+}
+
+void TreeRenderer::unload() {
+ glClearColor(0.f, 0.f, 0.f, 0.f);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glDeleteProgram(shader);
+}
diff --git a/themes/deprecated/TreeRenderer.h b/themes/deprecated/TreeRenderer.h
new file mode 100644
index 0000000..8a8bf7f
--- /dev/null
+++ b/themes/deprecated/TreeRenderer.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include "WebglContext.h"
+#include "types.h"
+#include "Shader.h"
+#include "mathlib.h"
+
+struct WebglContext;
+
+struct TreeRenderer {
+ Mat4x4 projection;
+ uint32 shader;
+ Vector4 clearColor;
+
+ struct {
+ int32 position;
+ int32 color;
+ } attributes;
+
+ struct {
+ int32 projection;
+ int32 model;
+ } uniforms;
+
+ float32 timeElapsed = 0.f;
+ float32 frequency = 5.f;
+
+ void load(WebglContext* context);
+ void render(float32 dtSeconds);
+ void unload();
+};
+
+struct TreeRendererVertex {
+ Vector2 position;
+ Vector4 color;
+};