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);
}
 
  |