#ifndef RENDER_H
#define RENDER_H

#include "aliases.h"
#include "mem_arena.h"
#include "obj.h"
#include "shader.h"
#include <stdbool.h>

typedef enum {
  RENDER_TYPE_WIREFRAME,
  RENDER_TYPE_FILLED,
  RENDER_TYPE_SHADED,

  COUNT_RENDER_TYPES,
} RenderType;

typedef enum {
  PROJECTION_TYPE_ORTHOGRAPHIC,
  PROJECTION_TYPE_PERSPECTIVE,

  COUNT_PROJECTION_TYPE,
} ProjectionType;

typedef struct render Render;
struct render {
  Image img;
  Depth depth;
};

bool init_render(Arena *arena, Render *render, u64 width, u64 height);
void render_model(const Model *model, Render *render, ShaderID shader,
                  RenderType render_type, Colour colour);

#endif // RENDER_H
