diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-11-27 20:47:58 +0100 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-11-27 20:47:58 +0100 |
commit | 59360094e5ac1ddeb5eda365ac4ccf765786635f (patch) | |
tree | 4ddf107804febdfb4550a0e616a07945c65c5e96 /DisplayClass.cpp | |
download | c3d-59360094e5ac1ddeb5eda365ac4ccf765786635f.tar c3d-59360094e5ac1ddeb5eda365ac4ccf765786635f.zip |
Initial commit
Diffstat (limited to 'DisplayClass.cpp')
-rw-r--r-- | DisplayClass.cpp | 54 |
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();
+}
|