summaryrefslogtreecommitdiffstats
path: root/DisplayClass.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2009-11-27 20:47:58 +0100
committerMatthias Schiffer <matthias@gamezock.de>2009-11-27 20:47:58 +0100
commit59360094e5ac1ddeb5eda365ac4ccf765786635f (patch)
tree4ddf107804febdfb4550a0e616a07945c65c5e96 /DisplayClass.cpp
downloadc3d-59360094e5ac1ddeb5eda365ac4ccf765786635f.tar
c3d-59360094e5ac1ddeb5eda365ac4ccf765786635f.zip
Initial commit
Diffstat (limited to 'DisplayClass.cpp')
-rw-r--r--DisplayClass.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/DisplayClass.cpp b/DisplayClass.cpp
new file mode 100644
index 0000000..836988d
--- /dev/null
+++ b/DisplayClass.cpp
@@ -0,0 +1,54 @@
+#include "Cuboid.h"
+#include "DisplayClass.h"
+#include "Matrix.h"
+#include "gl.h"
+#include <algorithm>
+
+
+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 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<Triangle> 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
+
+ std::list<Triangle> t1 = cube1.getTriangles(m);
+ triangles.splice(triangles.end(), t1);
+
+ glRotatef(angle*10, 0.0, 0.0, 1.0);
+ m.store();
+
+ std::list<Triangle> t2 = cube2.getTriangles(m);
+ triangles.splice(triangles.end(), t2);
+
+ //std::sort(triangles.begin(), triangles.end(), Sorter(p));
+
+ glLoadIdentity();
+
+ glBegin(GL_TRIANGLES);
+ for(std::list<Triangle>::reverse_iterator t = triangles.rbegin(); t != triangles.rend(); ++t) {
+ t->render();
+ }
+ glEnd();
+
+ glFlush();
+}