From 4cfa230985c89d42235d8266a6f31cf9ba25f20a Mon Sep 17 00:00:00 2001 From: Andy Killorin <37423245+Speedy6451@users.noreply.github.com> Date: Fri, 3 Jan 2025 13:32:26 -0500 Subject: [PATCH] hexacake --- src/main.rs | 169 +++++++++++++--------------------------------------- 1 file changed, 42 insertions(+), 127 deletions(-) diff --git a/src/main.rs b/src/main.rs index 026f803..11a4e77 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,114 +61,27 @@ fn main() { let mut draw_gl = || { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); - glTranslatef(0.0, 0.0, -5.0); + glTranslatef(0.0, 0.0, -5.0); glRotatef(xrot, 1.0, 0.0, 0.0); glRotatef(yrot, 0.0, 1.0, 0.0); glRotatef(zrot, 0.0, 0.0, 1.0); - // Front face - glBindTexture(GL_TEXTURE_2D, tex_exterior); - glBegin(GL_QUADS); + //slice(tex_exterior, tex_top, tex_interior); - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, -1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(-1.0, 1.0, 1.0); + glTranslatef(0.0, 0.0, -1.0); - glEnd(); + for i in 0..=6 { + glPushMatrix(); + glTranslatef(0., -1.0, 1.0); + glRotatef(2970. * i as f32, 0.0, 1.0, 0.0); + glTranslatef(0., 1.0, -1.0); + glScalef(1., 0.4, 1.); + slice(tex_exterior, tex_top, tex_interior, false); + glPopMatrix(); + } - // Back face - glBindTexture(GL_TEXTURE_2D, tex_exterior); - glBegin(GL_QUADS); - - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, -1.0); - - glEnd(); - - // Top face - glBindTexture(GL_TEXTURE_2D, tex_top); - glBegin(GL_QUADS); - - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, -1.0); - - glEnd(); - - // Bottom face - glBindTexture(GL_TEXTURE_2D, tex_exterior); - glBegin(GL_QUADS); - - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, 1.0); - - glEnd(); - - // Right face - glBindTexture(GL_TEXTURE_2D, tex_exterior); - glBegin(GL_QUADS); - - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, -1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(1.0, -1.0, 1.0); - - glEnd(); - - // Left face - glBindTexture(GL_TEXTURE_2D, tex_exterior); - glBegin(GL_QUADS); - - glColor3f(1., 1., 1.); - glTexCoord2f(1.0, 0.0); - glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(0.0, 1.0); - glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); - glVertex3f(-1.0, 1.0, -1.0); - - glEnd(); - - glTranslatef(0.0, 0.0, -3.); - slice(tex_exterior, tex_top, tex_interior); - - //xrot += 56.0; - yrot += 44.0; - //zrot += 72.0; + yrot += 24.0; }; @@ -203,34 +116,36 @@ fn main() { println!("Bye!"); } -unsafe fn slice(tex_exterior: u32, tex_top: u32, tex_interior: u32) { - // left face - glBindTexture(GL_TEXTURE_2D, tex_interior); - glBegin(GL_QUADS); - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(0., -1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, -1.0, 1.5); - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, 1.5); - glTexCoord2f(1.0, 1.0); - glVertex3f(0.0, 1.0, 1.0); - glEnd(); +unsafe fn slice(tex_exterior: u32, tex_top: u32, tex_interior: u32, edges: bool) { + if edges { + // left face + glBindTexture(GL_TEXTURE_2D, tex_interior); + glBegin(GL_QUADS); + glColor3f(1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); + glVertex3f(0., -1.0, 1.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(1.0, -1.0, 1.5); + glTexCoord2f(0.0, 1.0); + glVertex3f(1.0, 1.0, 1.5); + glTexCoord2f(1.0, 1.0); + glVertex3f(0.0, 1.0, 1.0); + glEnd(); - // right face - glBindTexture(GL_TEXTURE_2D, tex_interior); - glBegin(GL_QUADS); - glColor3f(1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); - glVertex3f(0., -1.0, 1.0); - glTexCoord2f(0.0, 0.0); - glVertex3f(1.0, -1.0, 0.5); - glTexCoord2f(0.0, 1.0); - glVertex3f(1.0, 1.0, 0.5); - glTexCoord2f(1.0, 1.0); - glVertex3f(0.0, 1.0, 1.0); - glEnd(); + // right face + glBindTexture(GL_TEXTURE_2D, tex_interior); + glBegin(GL_QUADS); + glColor3f(1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); + glVertex3f(0., -1.0, 1.0); + glTexCoord2f(0.0, 0.0); + glVertex3f(1.0, -1.0, 0.5); + glTexCoord2f(0.0, 1.0); + glVertex3f(1.0, 1.0, 0.5); + glTexCoord2f(1.0, 1.0); + glVertex3f(0.0, 1.0, 1.0); + glEnd(); + } // top face glBindTexture(GL_TEXTURE_2D, tex_top);