summaryrefslogtreecommitdiff
path: root/src/primitives.c
diff options
context:
space:
mode:
authorsanine-a <sanine.not@pm.me>2020-05-21 10:16:59 -0500
committersanine-a <sanine.not@pm.me>2020-05-21 10:16:59 -0500
commit8b7e8a1a3e77b4e3b56ea9025af8b254faa16c13 (patch)
tree3f39bb785d5f1df1f026589a6cc1aa2749e30e6d /src/primitives.c
parent9b66b322b600ab0db66cb6f3ff5a7c4196b9193f (diff)
add textured cube primitive
Diffstat (limited to 'src/primitives.c')
-rw-r--r--src/primitives.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/primitives.c b/src/primitives.c
index 7cbea07..00cfdb9 100644
--- a/src/primitives.c
+++ b/src/primitives.c
@@ -45,4 +45,77 @@ enum honey_mesh_result honey_mesh_new_cube(honey_mesh* mesh,
return result;
}
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+enum honey_mesh_result honey_mesh_new_textured_cube(honey_mesh* mesh,
+ float width,
+ float height,
+ float depth) {
+ float x0 = 0;
+ float y0 = 0;
+ float z0 = 0;
+
+ float x1 = width;
+ float y1 = height;
+ float z1 = depth;
+
+ float vertices[] = {
+ /* position tex coord */
+ /* back face */
+ x0, y0, z0, 0, 0,
+ x1, y0, z0, 1, 0,
+ x0, y1, z0, 0, 1,
+ x1, y1, z0, 1, 1,
+
+ /* front face */
+ x0, y0, z1, 0, 0,
+ x1, y0, z1, 1, 0,
+ x0, y1, z1, 0, 1,
+ x1, y1, z1, 1, 1,
+
+ /* left face */
+ x0, y0, z0, 0, 0,
+ x0, y1, z0, 1, 0,
+ x0, y0, z1, 0, 1,
+ x0, y1, z1, 1, 1,
+
+ /* right face */
+ x1, y0, z0, 0, 0,
+ x1, y1, z0, 1, 0,
+ x1, y0, z1, 0, 1,
+ x1, y1, z1, 1, 1,
+
+ /* bottom face */
+ x0, y0, z0, 0, 0,
+ x1, y0, z0, 1, 0,
+ x0, y0, z1, 0, 1,
+ x1, y0, z1, 1, 1,
+
+ /* top face */
+ x0, y1, z0, 0, 0,
+ x1, y1, z0, 1, 0,
+ x0, y1, z1, 0, 1,
+ x1, y1, z1, 1, 1 };
+
+ unsigned int indices[] = {
+ 0, 1, 2,
+ 1, 2, 3,
+ 4, 5, 6,
+ 5, 6, 7,
+ 8, 9, 10,
+ 9, 10, 11,
+ 12, 13, 14,
+ 13, 14, 15,
+ 16, 17, 18,
+ 17, 18, 19,
+ 20, 21, 22,
+ 21, 22, 23 };
+
+ unsigned int attrib_sizes[] = { 3, 2 };
+
+ enum honey_mesh_result result;
+ result = honey_mesh_new(mesh, vertices, 24,
+ 2, attrib_sizes,
+ indices, 36);
+ return result;
+}