summaryrefslogtreecommitdiff
path: root/gfx/src/renderer/imm_renderer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/src/renderer/imm_renderer.c')
-rw-r--r--gfx/src/renderer/imm_renderer.c45
1 files changed, 29 insertions, 16 deletions
diff --git a/gfx/src/renderer/imm_renderer.c b/gfx/src/renderer/imm_renderer.c
index e8c0410..dd5e2cb 100644
--- a/gfx/src/renderer/imm_renderer.c
+++ b/gfx/src/renderer/imm_renderer.c
@@ -135,32 +135,45 @@ void gfx_imm_draw_aabb3(ImmRenderer* renderer, aabb3 box) {
135 assert(renderer); 135 assert(renderer);
136 136
137 // clang-format off 137 // clang-format off
138 const vec3 verts[8] = { 138 const vec3 vertices[8] = {
139 box.min, // 2 ----- 6 139 vec3_make(box.min.x, box.min.y, box.max.z), // 7 ----- 6
140 vec3_make(box.min.x, box.min.y, box.max.z), // / /| 140 vec3_make(box.max.x, box.min.y, box.max.z), // / /|
141 vec3_make(box.min.x, box.max.y, box.min.z), // 3 ----- 7 | 141 vec3_make(box.max.x, box.max.y, box.max.z), // 3 ----- 2 |
142 vec3_make(box.min.x, box.max.y, box.max.z), // | | | 142 vec3_make(box.min.x, box.max.y, box.max.z), // | | |
143 vec3_make(box.max.x, box.min.y, box.min.z), // | 0 ----- 4 143 vec3_make(box.min.x, box.min.y, box.min.z), // | 4 ----- 5
144 vec3_make(box.max.x, box.min.y, box.max.z), // |/ |/ 144 vec3_make(box.max.x, box.min.y, box.min.z), // |/ |/
145 vec3_make(box.max.x, box.max.y, box.min.z), // 1 ----- 5 145 vec3_make(box.max.x, box.max.y, box.min.z), // 0 ----- 1
146 box.max}; 146 vec3_make(box.min.x, box.max.y, box.min.z)};
147 // clang-format on 147 // clang-format on
148 148
149#define tri(i0, i1, i2) verts[i0], verts[i1], verts[i2] 149 gfx_imm_draw_box3(renderer, vertices);
150 // TODO: Use vertex indices in Geometry. 150}
151
152void gfx_imm_draw_box3(ImmRenderer* renderer, const vec3 vertices[8]) {
153 assert(renderer);
154 assert(vertices);
155
156 // 7 ----- 6
157 // / /|
158 // 3 ----- 2 |
159 // | | |
160 // | 4 ----- 5
161 // |/ |/
162 // 0 ----- 1
163
164#define tri(i0, i1, i2) vertices[i0], vertices[i1], vertices[i2]
151 const vec3 tris[36] = {// Front. 165 const vec3 tris[36] = {// Front.
152 tri(1, 5, 7), tri(1, 7, 3), 166 tri(0, 1, 2), tri(0, 2, 3),
153 // Right. 167 // Right.
154 tri(5, 4, 6), tri(5, 6, 7), 168 tri(1, 5, 6), tri(1, 6, 2),
155 // Back. 169 // Back.
156 tri(4, 0, 2), tri(4, 2, 6), 170 tri(5, 4, 7), tri(5, 7, 6),
157 // Left. 171 // Left.
158 tri(0, 1, 3), tri(0, 3, 2), 172 tri(4, 0, 03), tri(4, 3, 7),
159 // Top. 173 // Top.
160 tri(3, 7, 6), tri(3, 6, 2), 174 tri(3, 2, 6), tri(3, 6, 7),
161 // Bottom. 175 // Bottom.
162 tri(0, 4, 5), tri(0, 5, 1)}; 176 tri(0, 4, 5), tri(0, 5, 1)};
163#undef tri
164 177
165 gfx_imm_draw_triangles(renderer, tris, 12); 178 gfx_imm_draw_triangles(renderer, tris, 12);
166} 179}