0027629: Visualization - apply a correct model-world matrix to normals in fixed funct...
authorisk <isk@opencascade.com>
Thu, 23 Jun 2016 12:01:34 +0000 (15:01 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 30 Jun 2016 10:56:33 +0000 (13:56 +0300)
Small correction of test case for issue CR27629

src/OpenGl/OpenGl_Structure.cxx
tests/bugs/vis/bug27629 [new file with mode: 0644]

index 3fdb864..9d93bff 100644 (file)
@@ -474,14 +474,6 @@ void OpenGl_Structure::Render (const Handle(OpenGl_Workspace) &theWorkspace) con
   aCtx->ModelWorldState.Push();
   aCtx->ModelWorldState.SetCurrent (Transformation);
 
-  // detect scale transform
-  const Standard_Boolean   anOldGlNormalize = aCtx->IsGlNormalizeEnabled();
-  const Standard_ShortReal aScaleX          = Transformation.GetRow (0).xyz().SquareModulus();
-  if (Abs (aScaleX - 1.f) > Precision::Confusion())
-  {
-    aCtx->SetGlNormalizeEnabled (Standard_True);
-  }
-
   if (TransformPersistence.Flags)
   {
     OpenGl_Mat4 aProjection = aCtx->ProjectionState.Current();
@@ -495,6 +487,14 @@ void OpenGl_Structure::Render (const Handle(OpenGl_Workspace) &theWorkspace) con
     aCtx->ApplyProjectionMatrix();
   }
 
+  // detect scale transform
+  const Standard_Boolean   anOldGlNormalize = aCtx->IsGlNormalizeEnabled();
+  const Standard_ShortReal aScaleX          = aCtx->ModelWorldState.Current().GetRow (0).xyz().SquareModulus();
+  if (Abs (aScaleX - 1.f) > Precision::Confusion())
+  {
+    aCtx->SetGlNormalizeEnabled (Standard_True);
+  }
+
   // Take into account transform persistence
   aCtx->ApplyModelViewMatrix();
 
diff --git a/tests/bugs/vis/bug27629 b/tests/bugs/vis/bug27629
new file mode 100644 (file)
index 0000000..4f4c9c5
--- /dev/null
@@ -0,0 +1,19 @@
+puts "========"
+puts "OCC27629"
+puts "========"
+puts ""
+##############################################################################################################################
+puts "Visualization - apply a correct model-world matrix to normals in fixed function pipeline with enabled zoom persistence."
+##############################################################################################################################
+
+vinit
+box b0 25 25 25
+vsetdispmode 1
+vdisplay b0 -trsfPers zoom
+vzoom 10
+
+if { [vreadpixel 220 200 name] != "DARKGOLDENROD3 1"} {
+  puts "Error: normals aren't normalized!"
+}
+
+checkview -screenshot -3d -path ${imagedir}/${test_image}.png