diff options
author | sanine-a <sanine.not@pm.me> | 2020-05-21 10:16:59 -0500 |
---|---|---|
committer | sanine-a <sanine.not@pm.me> | 2020-05-21 10:16:59 -0500 |
commit | 8b7e8a1a3e77b4e3b56ea9025af8b254faa16c13 (patch) | |
tree | 3f39bb785d5f1df1f026589a6cc1aa2749e30e6d /src/primitives.c | |
parent | 9b66b322b600ab0db66cb6f3ff5a7c4196b9193f (diff) |
add textured cube primitive
Diffstat (limited to 'src/primitives.c')
-rw-r--r-- | src/primitives.c | 73 |
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; +} |