#ifndef __G_RENDERER_H__
#define __G_RENDERER_H__

#include <gear/base.h>
#include <gear/graphics/color.h>
#include <sokol/sokol_gfx.h>

typedef struct g_renderer {
    sg_pass_action pass_action;
    u32 bound_pipeline_id;
} g_renderer;

typedef struct g_renderer_object {
    sg_bindings bind;
    sg_pipeline pipeline;
} g_renderer_object;

// src/graphics/renderer/create.c
g_renderer* g_renderer_create(g_color clear_color);

// src/graphics/renderer/renderer.c
void g_renderer_begin(g_renderer* renderer);
void g_renderer_draw(g_renderer* renderer, g_renderer_object object, u32 elements);
void g_renderer_end(g_renderer* renderer);

// src/graphics/renderer/destroy.c
void g_renderer_destroy(g_renderer* renderer);

#endif
