diff options
Diffstat (limited to 'src/primitives/primitives.c')
-rw-r--r-- | src/primitives/primitives.c | 356 |
1 files changed, 178 insertions, 178 deletions
diff --git a/src/primitives/primitives.c b/src/primitives/primitives.c index 0d8f209..efc4a0f 100644 --- a/src/primitives/primitives.c +++ b/src/primitives/primitives.c @@ -1,180 +1,180 @@ #include "primitives.h" -//honey_result honey_mesh_new_textured_plane(honey_mesh* mesh, -// float width, -// float height) { -// float x0 = 0; -// float y0 = 0; -// float x1 = width; -// float y1 = height; -// -// float vertices[] = { -// /* position normal uv */ -// x0, y0, 0, 0, 0, 1, 0, 0, -// x1, y0, 0, 0, 0, 1, 1, 0, -// x0, y1, 0, 0, 0, 1, 0, 1, -// x1, y1, 0, 0, 0, 1, 1, 1 }; -// -// unsigned int indices[] = { -// 0, 1, 2, -// 1, 2, 3 }; -// -// unsigned int attrib_sizes[] = { 3, 3, 2 }; -// -// honey_result result = honey_mesh_new(mesh, -// vertices, 4, -// 3, attrib_sizes, -// indices, 6); -// return result; -//} -// -///* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// -//honey_result honey_mesh_new_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 normal tex coord */ -// /* back face */ -// x0, y0, z0, 0, 0, -1, -// x1, y0, z0, 0, 0, -1, -// x0, y1, z0, 0, 0, -1, -// x1, y1, z0, 0, 0, -1, -// -// /* front face */ -// x0, y0, z1, 0, 0, 1, -// x1, y0, z1, 0, 0, 1, -// x0, y1, z1, 0, 0, 1, -// x1, y1, z1, 0, 0, 1, -// -// /* left face */ -// x0, y0, z0, -1, 0, 0, -// x0, y1, z0, -1, 0, 0, -// x0, y0, z1, -1, 0, 0, -// x0, y1, z1, -1, 0, 0, -// -// /* right face */ -// x1, y0, z0, 1, 0, 0, -// x1, y1, z0, 1, 0, 0, -// x1, y0, z1, 1, 0, 0, -// x1, y1, z1, 1, 0, 0, -// -// /* bottom face */ -// x0, y0, z0, 0, -1, 0, -// x1, y0, z0, 0, -1, 0, -// x0, y0, z1, 0, -1, 0, -// x1, y0, z1, 0, -1, 0, -// -// /* top face */ -// x0, y1, z0, 0, 1, 0, -// x1, y1, z0, 0, 1, 0, -// x0, y1, z1, 0, 1, 0, -// x1, y1, z1, 0, 1, 0 }; -// -// 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, 3 }; -// -// honey_result result = honey_mesh_new(mesh, -// vertices, 24, -// 2, attrib_sizes, -// indices, 36); -// -// return result; -//} -// -///* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// -//honey_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 normal tex coord */ -// /* back face */ -// x0, y0, z0, 0, 0, -1, 0, 0, -// x1, y0, z0, 0, 0, -1, 1, 0, -// x0, y1, z0, 0, 0, -1, 0, 1, -// x1, y1, z0, 0, 0, -1, 1, 1, -// -// /* front face */ -// x0, y0, z1, 0, 0, 1, 0, 0, -// x1, y0, z1, 0, 0, 1, 1, 0, -// x0, y1, z1, 0, 0, 1, 0, 1, -// x1, y1, z1, 0, 0, 1, 1, 1, -// -// /* left face */ -// x0, y0, z0, -1, 0, 0, 0, 0, -// x0, y1, z0, -1, 0, 0, 1, 0, -// x0, y0, z1, -1, 0, 0, 0, 1, -// x0, y1, z1, -1, 0, 0, 1, 1, -// -// /* right face */ -// x1, y0, z0, 1, 0, 0, 0, 0, -// x1, y1, z0, 1, 0, 0, 1, 0, -// x1, y0, z1, 1, 0, 0, 0, 1, -// x1, y1, z1, 1, 0, 0, 1, 1, -// -// /* bottom face */ -// x0, y0, z0, 0, -1, 0, 0, 0, -// x1, y0, z0, 0, -1, 0, 1, 0, -// x0, y0, z1, 0, -1, 0, 0, 1, -// x1, y0, z1, 0, -1, 0, 1, 1, -// -// /* top face */ -// x0, y1, z0, 0, 1, 0, 0, 0, -// x1, y1, z0, 0, 1, 0, 1, 0, -// x0, y1, z1, 0, 1, 0, 0, 1, -// x1, y1, z1, 0, 1, 0, 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, 3, 2 }; -// -// honey_result result; -// result = honey_mesh_new(mesh, vertices, 24, -// 3, attrib_sizes, -// indices, 36); -// return result; -//} +honey_result honey_mesh_new_textured_plane(honey_mesh* mesh, + float width, + float height) { + float x0 = 0; + float y0 = 0; + float x1 = width; + float y1 = height; + + float vertices[] = { + /* position normal uv */ + x0, y0, 0, 0, 0, 1, 0, 0, + x1, y0, 0, 0, 0, 1, 1, 0, + x0, y1, 0, 0, 0, 1, 0, 1, + x1, y1, 0, 0, 0, 1, 1, 1 }; + + unsigned int indices[] = { + 0, 1, 2, + 1, 2, 3 }; + + unsigned int attrib_sizes[] = { 3, 3, 2 }; + + honey_result result = honey_mesh_new(mesh, + vertices, 4, + 3, attrib_sizes, + indices, 6); + return result; +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +honey_result honey_mesh_new_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 normal tex coord */ + /* back face */ + x0, y0, z0, 0, 0, -1, + x1, y0, z0, 0, 0, -1, + x0, y1, z0, 0, 0, -1, + x1, y1, z0, 0, 0, -1, + + /* front face */ + x0, y0, z1, 0, 0, 1, + x1, y0, z1, 0, 0, 1, + x0, y1, z1, 0, 0, 1, + x1, y1, z1, 0, 0, 1, + + /* left face */ + x0, y0, z0, -1, 0, 0, + x0, y1, z0, -1, 0, 0, + x0, y0, z1, -1, 0, 0, + x0, y1, z1, -1, 0, 0, + + /* right face */ + x1, y0, z0, 1, 0, 0, + x1, y1, z0, 1, 0, 0, + x1, y0, z1, 1, 0, 0, + x1, y1, z1, 1, 0, 0, + + /* bottom face */ + x0, y0, z0, 0, -1, 0, + x1, y0, z0, 0, -1, 0, + x0, y0, z1, 0, -1, 0, + x1, y0, z1, 0, -1, 0, + + /* top face */ + x0, y1, z0, 0, 1, 0, + x1, y1, z0, 0, 1, 0, + x0, y1, z1, 0, 1, 0, + x1, y1, z1, 0, 1, 0 }; + + 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, 3 }; + + honey_result result = honey_mesh_new(mesh, + vertices, 24, + 2, attrib_sizes, + indices, 36); + + return result; +} + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ + +honey_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 normal tex coord */ + /* back face */ + x0, y0, z0, 0, 0, -1, 0, 0, + x1, y0, z0, 0, 0, -1, 1, 0, + x0, y1, z0, 0, 0, -1, 0, 1, + x1, y1, z0, 0, 0, -1, 1, 1, + + /* front face */ + x0, y0, z1, 0, 0, 1, 0, 0, + x1, y0, z1, 0, 0, 1, 1, 0, + x0, y1, z1, 0, 0, 1, 0, 1, + x1, y1, z1, 0, 0, 1, 1, 1, + + /* left face */ + x0, y0, z0, -1, 0, 0, 0, 0, + x0, y1, z0, -1, 0, 0, 1, 0, + x0, y0, z1, -1, 0, 0, 0, 1, + x0, y1, z1, -1, 0, 0, 1, 1, + + /* right face */ + x1, y0, z0, 1, 0, 0, 0, 0, + x1, y1, z0, 1, 0, 0, 1, 0, + x1, y0, z1, 1, 0, 0, 0, 1, + x1, y1, z1, 1, 0, 0, 1, 1, + + /* bottom face */ + x0, y0, z0, 0, -1, 0, 0, 0, + x1, y0, z0, 0, -1, 0, 1, 0, + x0, y0, z1, 0, -1, 0, 0, 1, + x1, y0, z1, 0, -1, 0, 1, 1, + + /* top face */ + x0, y1, z0, 0, 1, 0, 0, 0, + x1, y1, z0, 0, 1, 0, 1, 0, + x0, y1, z1, 0, 1, 0, 0, 1, + x1, y1, z1, 0, 1, 0, 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, 3, 2 }; + + honey_result result; + result = honey_mesh_new(mesh, vertices, 24, + 3, attrib_sizes, + indices, 36); + return result; +} |