aboutsummaryrefslogtreecommitdiff
path: root/09-september/Draw.c
diff options
context:
space:
mode:
Diffstat (limited to '09-september/Draw.c')
-rw-r--r--09-september/Draw.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/09-september/Draw.c b/09-september/Draw.c
new file mode 100644
index 0000000..7138fb1
--- /dev/null
+++ b/09-september/Draw.c
@@ -0,0 +1,77 @@
+#include "game.h"
+
+/*We upload all the light vectors*/
+static const Light diffuseLight[4] =
+{
+ /* Sun Light */
+ { {5.0f, 50.0f, 2.0f}, {1.0f, 1.0f, 1.0f, 1.0f}, {1.0f, 0.0f, 0.0f} },
+ /* Other lights */
+ { {10.0f, 20.0f, 0.0f}, {1.0f, 0.0f, 0.0f, 1.0f}, {1.0f, 0.01f, 0.002f} },
+ { {20.0f, 20.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 1.0f}, {1.0f, 0.01f, 0.002f} },
+ { {30.0f, 20.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 1.0f}, {1.0f, 0.01f, 0.002f} },
+};
+
+void Draw(Game *game)
+{
+ Mat4 viewMatrix, projectedViewMatrix, modelTransform, projectionMatrix;
+ Vec3 pos = {-10.0, 70.0, 10.0};
+ Vec3 viewDirection = {0.22, -0.77, -0.58};
+ Vec3 up = {0.0f, 1.0f, 0.0f};
+
+ Render_BeginFrame();
+ shader_set_uniform_vec3(game->shaderProgram, "World_eyePosition", (float *)&game->camera->position);
+ Render_LoadLights(game->shaderProgram, diffuseLight, 1);
+
+ texture_bind(game->normalMap[1], 13);
+ glUniform1i(game->shaderProgram->Normal_Map, 13);
+
+ viewMatrix = mat4_lookAt(&pos, &viewDirection, &up);
+ projectionMatrix = mat4_orthographic(-50.0f, 50.0f, -50.0f, 50.0f, -50.0f, 70.0f);
+ //
+ projectedViewMatrix = mat4_mul(&projectionMatrix, &viewMatrix);
+
+ Render_DrawEntity(game->shaderProgram, &projectedViewMatrix, &game->player.entity);
+
+ texture_bind(game->normalMap[0], 13);
+ Render_DrawEntity(game->shaderProgram, &projectedViewMatrix, &game->ents[0]);
+
+ Render_EndFrame();
+
+ Vec3 t = {-1.0f, 10.0f, -1.0f};
+ modelTransform = mat4_translate(&t);
+ Mat4 temp = mat4_scale(10.0f, 10.0f, 10.0f);
+ modelTransform = mat4_mul(&modelTransform, &temp);
+ viewMatrix = camera_get_model_to_view_matrix(game->camera);
+ projectionMatrix = game->camera->projectionMatrix;
+ projectedViewMatrix = mat4_mul(&projectionMatrix, &viewMatrix);
+
+ modelTransform = mat4_mul(&projectedViewMatrix, &modelTransform);
+
+ glBindTexture(GL_TEXTURE_2D, render.shadow_map);
+ glUseProgram(render.default_shader->id);
+ glUniform1i(render.default_shader->Texture, 0);
+ glUniformMatrix4fv(render.default_shader->totalTransform, 1, GL_FALSE, modelTransform.data);
+
+ glBindVertexArray(render.default_quad->vao);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ glBindVertexArray(0);
+
+ /*
+ glUseProgram(game->terrainProgram->id);
+
+ shader_set_uniform_vec3(game->terrainProgram, "World_eyePosition", (float *)&game->camera->position);
+ Render_LoadLights(game->terrainProgram, diffuseLight, 1);
+
+ Render_DrawTerrain(game->terrainProgram, &projectedViewMatrix, game->terrain);
+
+ glUseProgram(game->skyboxProgram->id);
+ Render_DrawSky(game->skyboxProgram, &viewMatrix, &game->camera->projectionMatrix, &game->sky);
+
+ glUseProgram(game->particlesProgram->id);
+ Render_DrawParticles(game->particlesProgram, &viewMatrix,
+ &game->camera->projectionMatrix);
+
+ */
+ glUseProgram(game->shaderProgram->id);
+ window_update(game->window);
+}