static const float AXIS_RADIUS = 5.0f;
-static void renderScene(const Scene*);
+static void renderScene(const Scene*, const Transform baseTransform);
static void setupCamera();
static void moveCameraTo(const Scene* scene);
static void drawAxes();
setupCamera();
moveCameraTo(cameraAnchor);
- renderScene(currentScene);
+ renderScene(currentScene, identity());
glFlush();
glutSwapBuffers();
glutPostRedisplay();
}
-void renderScene(const Scene* scene) {
+static void renderScene(const Scene* scene, const Transform baseTransform) {
if (!scene) {
return;
}
+ Transform transform = multiply(scene->transform, baseTransform);
+
glMatrixMode(GL_MODELVIEW);
- glLoadTransposeMatrixf((const GLfloat*) &scene->transform);
+ glLoadTransposeMatrixf((const GLfloat*) &transform);
glDisable(GL_LIGHTING);
drawAxes();
}
for (size_t i = 0; i < scene->numChildren; ++i) {
- renderScene(scene->children[i]);
+ renderScene(scene->children[i], transform);
}
}
logWarning("Could not enable vsync (extensions not supported)");
}
- GLint maxModelviewStackDepth;
- glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &maxModelviewStackDepth);
- logDebug("GL_MAX_MODELVIEW_STACK_DEPTH: %d", maxModelviewStackDepth);
-
glutDisplayFunc(renderFrame);
glutReshapeFunc(resizeStage);
//glutKeyboardFunc(key_pressed);