summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/primitives.c73
-rw-r--r--src/texture.c7
2 files changed, 80 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;
+}
diff --git a/src/texture.c b/src/texture.c
index b041b4f..c1a5843 100644
--- a/src/texture.c
+++ b/src/texture.c
@@ -36,3 +36,10 @@ enum honey_texture_result honey_texture_new(honey_texture* texture,
return TEXTURE_OK;
}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+void honey_texture_use(honey_texture texture, int texture_unit) {
+ glActiveTexture(GL_TEXTURE0 + texture_unit);
+ glBindTexture(GL_TEXTURE_2D, texture.texture_id);
+}