#include "Cuboid.h" #include "DisplayClass.h" #include "Matrix.h" #include "gl.h" #include void DisplayClass::renderScene(unsigned long delta) { //Cuboid cube1(2, 2, 1, -1, 1, 0.5); //Cuboid cube2(1, 1, 2, -0.5, 0.5, -1.5); static const Cuboid dc(0.8, 2, 0.8); static const float xs[5] = {-2.0, -1.0, 0.0, 1.0, 2.0}; static const float zs[5] = {-2.0, -1.0, 0.0, 1.0, 2.0}; Cuboid cubes[5][5] = { {dc, dc, dc, dc, dc}, {dc, dc, dc, dc, dc}, {dc, dc, dc, dc, dc}, {dc, dc, dc, dc, dc}, {dc, dc, dc, dc, dc}, }; for(int i = 0; i < 5; ++i) { for(int j = 0; j < 5; ++j) { cubes[i][j].setPos(xs[j], 0.0, zs[i]); } } /* {Cuboid(2, 1, 1, -2.5, 1.0, -1.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, -1.5)}, {Cuboid(2, 1, 1, -2.5, 1.0, -0.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -0.5), Cuboid(2, 1, 1, 1.5, 1.0, -0.5)}, {Cuboid(2, 1, 1, -2.5, 1.0, 0.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, 0.5)}, {Cuboid(2, 1, 1, -2.5, 1.0, 1.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, 1.5)}, {Cuboid(2, 1, 1, -2.5, 1.0, 2.5), Cuboid(2, 1, 1, -1.5, 1.0, 2.5), Cuboid(2, 1, 1, -0.5, 1.0, 2.5), Cuboid(2, 1, 1, 0.5, 1.0, 2.5), Cuboid(2, 1, 1, 1.5, 1.0, 2.5)}};*/ static float angle = 0.0; angle += delta*0.05; if(angle >= 360) angle -= 360; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); Matrix p(GL_PROJECTION_MATRIX); Matrix m; std::list triangles; glLoadIdentity(); // Clean up matrix glTranslatef(0.0, 0.0, -10.0); // Then set up transformation glRotatef(angle, 0.0, 1.0, 0.0); //glRotatef(angle*2, 1.0, 0.0, 0.0); //glRotatef(angle*3, 0.0, 0.0, 1.0); //glRotatef(-angle*5, 0.0, 0.0, 1.0); m.store(); // Save current transformation for(int i = 0; i < 5; ++i) { for(int j = 0; j < 5; ++j) { std::list ct = cubes[i][j].getTriangles(m); triangles.splice(triangles.end(), ct); } } /*std::list t1 = cube1.getTriangles(m); triangles.splice(triangles.end(), t1); glRotatef(angle*10, 0.0, 0.0, 1.0); m.store(); t1 = cube2.getTriangles(m); triangles.splice(triangles.end(), t1);*/ //std::sort(triangles.begin(), triangles.end(), Sorter(p)); glLoadIdentity(); glBegin(GL_TRIANGLES); for(std::list::reverse_iterator t = triangles.rbegin(); t != triangles.rend(); ++t) { t->render(); } glEnd(); glFlush(); }