diff options
Diffstat (limited to 'gfx/src/renderer/imm_renderer.c')
-rw-r--r-- | gfx/src/renderer/imm_renderer.c | 45 |
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 | |||
152 | void 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 | } |