1#ifndef TEST_BLOCK_H
2#define TEST_BLOCK_H
3
4#include "renderer/renderer.h"
5
6#define RGBA(r, g, b, a) ( \
7 ((u32)(r) ) | \
8 ((u32)(g) << 8) | \
9 ((u32)(b) << 16) | \
10 ((u32)(a) << 24) \
11)
12
13MGMesh block_mesh_create(void);
14
15static const MGVertex vtc[24] = {
16 /* north: -z */
17 {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 0, 0, 255)},
18 {0.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 0, 255)},
19 {1.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 0, 255)},
20 {1.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(255, 0, 0, 255)},
21
22 /* south: +z */
23 {1.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 255, 0, 255)},
24 {1.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 0, 255)},
25 {0.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 0, 255)},
26 {0.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(0, 255, 0, 255)},
27
28 /* west: -x */
29 {0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(0, 0, 255, 255)},
30 {0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 0, 255, 255)},
31 {0.0f, 1.0f, 0.0f, 1.0f, 0.0f, RGBA(0, 0, 255, 255)},
32 {0.0f, 0.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 0, 255, 255)},
33
34 /* east: +x */
35 {1.0f, 0.0f, 0.0f, 0.0f, 1.0f, RGBA(255, 255, 0, 255)},
36 {1.0f, 1.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 255, 0, 255)},
37 {1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(255, 255, 0, 255)},
38 {1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 255, 0, 255)},
39
40 /* bottom: -y */
41 {0.0f, 0.0f, 1.0f, 0.0f, 1.0f, RGBA(255, 0, 255, 255)},
42 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, RGBA(255, 0, 255, 255)},
43 {1.0f, 0.0f, 0.0f, 1.0f, 0.0f, RGBA(255, 0, 255, 255)},
44 {1.0f, 0.0f, 1.0f, 1.0f, 1.0f, RGBA(255, 0, 255, 255)},
45
46 /* top: +y */
47 {0.0f, 1.0f, 0.0f, 0.0f, 1.0f, RGBA(0, 255, 255, 255)},
48 {0.0f, 1.0f, 1.0f, 0.0f, 0.0f, RGBA(0, 255, 255, 255)},
49 {1.0f, 1.0f, 1.0f, 1.0f, 0.0f, RGBA(0, 255, 255, 255)},
50 {1.0f, 1.0f, 0.0f, 1.0f, 1.0f, RGBA(0, 255, 255, 255)}
51};
52
53static const u16 idc[36] = {
54 0, 1, 2, 0, 2, 3,
55 4, 5, 6, 4, 6, 7,
56 8, 9, 10, 8, 10, 11,
57 12, 13, 14, 12, 14, 15,
58 16, 17, 18, 16, 18, 19,
59 20, 21, 22, 20, 22, 23,
60};
61
62MGMesh block_mesh_create(void)
63{
64 MGMeshDesc desc = { vtc, 24, idc, 36 };
65 return renderer_mesh_create(&desc);
66}
67
68#endif /* TEST_BLOCK_H */
69