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
47
48
49
50
|
#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
// }
|