sprites on screen yay

This commit is contained in:
2023-08-14 03:58:13 -04:00
parent 6325c4e4a7
commit b9395446a0
147 changed files with 28994 additions and 154 deletions

View File

@ -0,0 +1,5 @@
#pragma once
#include "../../engine/atlas.h"
#include "../../engine/renderer.h"
#include "../../engine/shader.h"

View File

@ -0,0 +1,62 @@
#include "texture_quad.h"
/* Draws a textured quad. */
void
texture_quad_draw(Renderer* renderer, Atlas* atlas, Shader* shader, mat4 model, vec2 size, vec4 color)
{
vec2 uvMin;
vec2 uvMax;
mat4 view;
mat4 projection;
atlas_uv_get(atlas, uvMin, uvMax);
f32 vertices[4][5] =
{
{0.0f , 0.0f , 0.0f, uvMin[0], uvMin[1]},
{0.0f , size[1], 0.0f, uvMin[0], uvMax[1]},
{size[0], size[1], 0.0f, uvMax[0], uvMax[1]},
{size[0], 0.0f , 0.0f, uvMax[0], uvMin[1]},
};
u32 indices[2][3] =
{
{1, 2, 3},
{0, 1, 3}
};
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
camera_view_get(&renderer->camera, view);
camera_projection_get(&renderer->camera, projection);
model[3][0] = 25.0f;
model[3][1] = 25.0f;
vao_bind(&renderer->vao);
vbo_bind(&renderer->vbo);
vbo_buffer(&renderer->vbo, sizeof(vertices), vertices);
vbo_bind(&renderer->ebo);
vbo_buffer(&renderer->ebo, sizeof(indices), indices);
vertex_attribute_set(0, 3, GL_FLOAT, 5 * sizeof(f32), 0);
vertex_attribute_set(1, 2, GL_FLOAT, 5 * sizeof(f32), 3 * sizeof(f32));
vao_bind(&renderer->vao);
renderer_shader_use(renderer, shader);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_VIEW, view);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_PROJECTION, projection);
shader_uniform_mat4_set(shader, TEXTURE_QUAD_UNIFORM_MODEL, model);
shader_uniform_vec4_set(shader, TEXTURE_QUAD_UNIFORM_COLOR, color);
shader_uniform_texture_set(shader, TEXTURE_QUAD_UNIFORM_TEXTURE, &atlas->texture, 0);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
vao_unbind();
}

View File

@ -0,0 +1,11 @@
#pragma once
#include "RENDER_COMMON.h"
#define TEXTURE_QUAD_UNIFORM_COLOR "uColor"
#define TEXTURE_QUAD_UNIFORM_MODEL "uModel"
#define TEXTURE_QUAD_UNIFORM_PROJECTION "uProjection"
#define TEXTURE_QUAD_UNIFORM_TEXTURE "uTexture"
#define TEXTURE_QUAD_UNIFORM_VIEW "uView"
void texture_quad_draw(Renderer* renderer, Atlas* atlas, Shader* shader, mat4 model, vec2 size, vec4 color);

View File

@ -0,0 +1,26 @@
#include "triangle.h"
/* Draws a triangle. */
void
triangle_draw(Renderer* renderer, Shader* shader)
{
f32 vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
vao_bind(&renderer->vao);
vbo_bind(&renderer->vbo);
renderer->vbo.isDynamic = false;
vbo_buffer(&renderer->vbo, sizeof(vertices), vertices);
vertex_attribute_set(0, 3, GL_FLOAT, 3 * sizeof(f32), 0);
renderer_shader_use(renderer, shader);
glDrawArrays(GL_TRIANGLES, 0, 3);
vao_unbind();
}

View File

@ -0,0 +1,5 @@
#pragma once
#include "RENDER_COMMON.h"
void triangle_draw(Renderer* renderer, Shader* shader);