summaryrefslogtreecommitdiff
path: root/src/render/immdraw.h
blob: 0d5837574f9f39a524d87ee8dc559e4f56f6450f (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
/**
 * @brief Immediate-mode drawing APIs
 */

#pragma once
#include "defines.h"
#include "maths_types.h"
#include "ral_impl.h"
#include "render_types.h"

typedef struct Immdraw_Storage {
  Mesh plane;
  Mesh cube;
  Mesh sphere;
  GPU_Pipeline* colour_pipeline;
} Immdraw_Storage;

// --- Public API

PUB void Immdraw_Init(Immdraw_Storage* storage);
PUB void Immdraw_Shutdown(Immdraw_Storage* storage);

// These functions cause a pipeline switch and so aren't optimised for performance
PUB void Immdraw_Plane(Transform tf, Vec4 colour, bool wireframe);
PUB void Immdraw_Cuboid(Transform tf, Vec4 colour, bool wireframe);
PUB void Immdraw_Sphere(Transform tf, f32 size, Vec4 colour, bool wireframe);
PUB void Immdraw_TransformGizmo(Transform tf, f32 size);