]> git.lizzy.rs Git - shadowclad.git/commitdiff
Compute world space transforms for rendering
authoroutfrost <kotlet.bahn@gmail.com>
Wed, 27 May 2020 00:51:55 +0000 (02:51 +0200)
committeroutfrost <kotlet.bahn@gmail.com>
Wed, 27 May 2020 00:51:55 +0000 (02:51 +0200)
src/engine/render.c
src/main.c

index 34c493a1dfe9462f13ee20e352bf1ef239e67537..0cfc49f1f57af34cc913d99a37c424f6a1bdebef 100644 (file)
@@ -11,7 +11,7 @@ const Scene* cameraAnchor;
 
 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();
@@ -47,7 +47,7 @@ void renderFrame() {
        setupCamera();
        moveCameraTo(cameraAnchor);
 
-       renderScene(currentScene);
+       renderScene(currentScene, identity());
 
        glFlush();
        glutSwapBuffers();
@@ -55,13 +55,15 @@ void renderFrame() {
        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();
@@ -76,7 +78,7 @@ void renderScene(const Scene* scene) {
        }
 
        for (size_t i = 0; i < scene->numChildren; ++i) {
-               renderScene(scene->children[i]);
+               renderScene(scene->children[i], transform);
        }
 }
 
index fa9ed02453ac8c72864e6c1fcc2be6f653319cba..7372d8eef5bbd831af0a80d3885f32b107b52a97 100644 (file)
@@ -48,10 +48,6 @@ int main(int argc, char** argv) {
                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);