From 6b8af9cf83851c075c6c9514b1deaa931c2b19a4 Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Fri, 16 Jan 2026 23:02:32 +0100 Subject: Initial commit --- 09-september/Draw.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 09-september/Draw.c (limited to '09-september/Draw.c') 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); +} -- cgit v1.2.3