From a27a62fff040240389ffa5a25254206044185588 Mon Sep 17 00:00:00 2001 From: outfrost Date: Wed, 27 May 2020 02:51:55 +0200 Subject: [PATCH] Compute world space transforms for rendering --- src/engine/render.c | 12 +++++++----- src/main.c | 4 ---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/engine/render.c b/src/engine/render.c index 34c493a..0cfc49f 100644 --- a/src/engine/render.c +++ b/src/engine/render.c @@ -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); } } diff --git a/src/main.c b/src/main.c index fa9ed02..7372d8e 100644 --- a/src/main.c +++ b/src/main.c @@ -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); -- 2.44.0