summaryrefslogtreecommitdiff
path: root/src/render/immediate.c
blob: 63a62b8168c07e0e8ff9cd20386c64c8c80390f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "immediate.h"
#include "glad/glad.h"
#include "maths.h"
#include "primitives.h"
#include "ral_types.h"
#include "render.h"
#include "render_types.h"

typedef struct immdraw_system {
  // primitive meshes (get reused for each draw call)
  mesh plane;
  mesh cube;
  mesh sphere;
  // command lists

} immdraw_system;

bool immdraw_system_init(immdraw_system* state) {
  geometry_data plane_geometry = geo_create_plane(f32x2(1, 1));
  state->plane = mesh_create(&plane_geometry, true);

  geometry_data cube_geometry = geo_create_cuboid(f32x3(1, 1, 1));
  state->cube = mesh_create(&cube_geometry, true);

  geometry_data sphere_geometry = geo_create_uvsphere(1.0, 48, 48);
  state->sphere = mesh_create(&sphere_geometry, true);

  return true;
}

void immdraw_plane(vec3 pos, quat rotation, f32 u_scale, f32 v_scale, vec4 colour) {}

void immdraw_system_render(immdraw_system* state) {}

// void imm_draw_sphere(vec3 pos, f32 radius, vec4 colour) {
//   // Create the vertices
//   geometry_data geometry = geo_create_uvsphere(radius, 16, 16);
//   geo_set_vertex_colours(&geometry, colour);

//   // Upload to GPU
//   mat4 model = mat4_translation(pos);

//   // Set pipeline

//   // Draw
// }