From 6851428dd4ab0611b48f76a275624f1ab818a5fb Mon Sep 17 00:00:00 2001 From: mzernova Date: Sun, 22 Dec 2024 23:33:51 +0000 Subject: [PATCH] Take into account camera movements for background grid --- src/OpenGl/OpenGl_View.cxx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/OpenGl/OpenGl_View.cxx b/src/OpenGl/OpenGl_View.cxx index 06dea367c8..3f11f59093 100644 --- a/src/OpenGl/OpenGl_View.cxx +++ b/src/OpenGl/OpenGl_View.cxx @@ -2585,15 +2585,16 @@ void OpenGl_View::renderGrid() aContext->ProjectionState.SetCurrent (aContext->Camera()->ProjectionMatrixF()); aContext->ApplyProjectionMatrix(); - OpenGl_Mat4 aWorldViewState = myGridParams.IsBackground() - ? OpenGl_Mat4() - : aContext->WorldViewState.Current(); - OpenGl_Mat4 aMat; - const gp_Pnt& aPosition = myGridParams.IsBackground() ? gp_Pnt (0.0, 0.0, -aZFar) : myGridParams.Position(); - aMat.SetColumn (3, Graphic3d_Vec4 ((float)aPosition.X(), (float)aPosition.Y(), (float)aPosition.Z(), 1.0)); + const OpenGl_Mat4& aWorldViewCurrent = aContext->WorldViewState.Current(); + OpenGl_Mat4 aWorldViewState = myGridParams.IsBackground() ? OpenGl_Mat4() : aWorldViewCurrent; + const gp_Pnt& aPosition = myGridParams.IsBackground() + ? gp_Pnt (aWorldViewCurrent.GetValue (0, 3), aWorldViewCurrent.GetValue (1, 3), -aZFar) + : myGridParams.Position(); + OpenGl_Mat4 aTranslation; + aTranslation.SetColumn (3, Graphic3d_Vec4 ((float)aPosition.X(), (float)aPosition.Y(), (float)aPosition.Z(), 1.0)); aContext->WorldViewState.Push(); - aContext->WorldViewState.SetCurrent (aWorldViewState * aMat); + aContext->WorldViewState.SetCurrent (aWorldViewState * aTranslation); aContext->ApplyWorldViewMatrix(); aContext->core11fwd->glEnable (GL_DEPTH_TEST);