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
|
#include <gfx/util/geometry.h>
#include <math/vec2.h>
static void make_quad_11_positions(vec2 positions[4]) {
positions[0] = vec2_make(-1, +1);
positions[1] = vec2_make(-1, -1);
positions[2] = vec2_make(+1, +1);
positions[3] = vec2_make(+1, -1);
}
static void make_quad_01_positions(vec2 positions[4]) {
positions[0] = vec2_make(0, 0);
positions[1] = vec2_make(1, 0);
positions[2] = vec2_make(1, 1);
positions[3] = vec2_make(0, 1);
}
static GeometryDesc make_quad_desc(vec2 positions[4]) {
return (GeometryDesc){
.positions2d = (BufferView2d){.data = positions,
.size_bytes = 4 * sizeof(vec2),
.count = 4},
.num_verts = 4,
.type = TriangleStrip
};
}
Geometry* gfx_make_quad_11(GfxCore* gfxcore) {
assert(gfxcore);
vec2 positions[4];
make_quad_11_positions(positions);
const GeometryDesc geometry_desc = make_quad_desc(positions);
return gfx_make_geometry(gfxcore, &geometry_desc);
}
Geometry* gfx_make_quad_01(GfxCore* gfxcore) {
assert(gfxcore);
vec2 positions[4];
make_quad_01_positions(positions);
const GeometryDesc geometry_desc = make_quad_desc(positions);
return gfx_make_geometry(gfxcore, &geometry_desc);
}
|