0030748: Visualization - Marker displayed in immediate layer ruins QT Quick view...
[occt.git] / src / OpenGl / OpenGl_BackgroundArray.cxx
index 0dce18b..fb6f660 100644 (file)
@@ -27,6 +27,7 @@
 // =======================================================================
 OpenGl_BackgroundArray::OpenGl_BackgroundArray (const Graphic3d_TypeOfBackground theType)
 : OpenGl_PrimitiveArray (NULL, Graphic3d_TOPA_TRIANGLESTRIPS, NULL, NULL, NULL),
+  myTrsfPers (Graphic3d_TMF_2d, theType == Graphic3d_TOB_TEXTURE ? Aspect_TOTP_CENTER : Aspect_TOTP_LEFT_LOWER),
   myType (theType),
   myFillMethod (Aspect_FM_NONE),
   myViewWidth (0),
@@ -37,22 +38,11 @@ OpenGl_BackgroundArray::OpenGl_BackgroundArray (const Graphic3d_TypeOfBackground
   myAttribs = new Graphic3d_Buffer (anAlloc);
 
   myDrawMode = GL_TRIANGLE_STRIP;
+  myIsFillType = true;
 
   myGradientParams.color1 = OpenGl_Vec4 (0.0f, 0.0f, 0.0f, 1.0f);
   myGradientParams.color2 = OpenGl_Vec4 (0.0f, 0.0f, 0.0f, 1.0f);
   myGradientParams.type   = Aspect_GFM_NONE;
-
-  myTrsfPers.Flags = Graphic3d_TMF_2d;
-  if (myType == Graphic3d_TOB_TEXTURE)
-  {
-    myTrsfPers.Point.x() = 0.0;
-    myTrsfPers.Point.y() = 0.0;
-  }
-  else
-  {
-    myTrsfPers.Point.x() = -1.0;
-    myTrsfPers.Point.y() = -1.0;
-  }
 }
 
 // =======================================================================
@@ -222,24 +212,24 @@ Standard_Boolean OpenGl_BackgroundArray::createGradientArray() const
   {
     case Aspect_GFM_HOR:
     {
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color1.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color2.ChangeData();
+      aCorners[2] = myGradientParams.color1.ChangeData();
+      aCorners[3] = myGradientParams.color1.ChangeData();
       break;
     }
     case Aspect_GFM_VER:
     {
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color1.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color1.ChangeData();
+      aCorners[2] = myGradientParams.color2.ChangeData();
+      aCorners[3] = myGradientParams.color1.ChangeData();
       break;
     }
     case Aspect_GFM_DIAG1:
     {
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color1.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[3] = myGradientParams.color1.ChangeData();
       aDiagCorner1[0] = aDiagCorner2[0] = 0.5f * (aCorners[0][0] + aCorners[3][0]);
       aDiagCorner1[1] = aDiagCorner2[1] = 0.5f * (aCorners[0][1] + aCorners[3][1]);
       aDiagCorner1[2] = aDiagCorner2[2] = 0.5f * (aCorners[0][2] + aCorners[3][2]);
@@ -249,8 +239,8 @@ Standard_Boolean OpenGl_BackgroundArray::createGradientArray() const
     }
     case Aspect_GFM_DIAG2:
     {
-      aCorners[1] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color2.xyz().ChangeData();
+      aCorners[1] = myGradientParams.color1.ChangeData();
+      aCorners[2] = myGradientParams.color2.ChangeData();
       aDiagCorner1[0] = aDiagCorner2[0] = 0.5f * (aCorners[1][0] + aCorners[2][0]);
       aDiagCorner1[1] = aDiagCorner2[1] = 0.5f * (aCorners[1][1] + aCorners[2][1]);
       aDiagCorner1[2] = aDiagCorner2[2] = 0.5f * (aCorners[1][2] + aCorners[2][2]);
@@ -265,18 +255,18 @@ Standard_Boolean OpenGl_BackgroundArray::createGradientArray() const
       aVertices[2] = OpenGl_Vec2(float(myViewWidth), 0.0f);
       aVertices[3] = OpenGl_Vec2(0.0f,               0.0f);
 
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color2.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color1.ChangeData();
+      aCorners[2] = myGradientParams.color2.ChangeData();
+      aCorners[3] = myGradientParams.color2.ChangeData();
       break;
     }
     case Aspect_GFM_CORNER2:
     {
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color2.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color1.ChangeData();
+      aCorners[2] = myGradientParams.color2.ChangeData();
+      aCorners[3] = myGradientParams.color2.ChangeData();
       break;
     }
     case Aspect_GFM_CORNER3:
@@ -286,18 +276,18 @@ Standard_Boolean OpenGl_BackgroundArray::createGradientArray() const
       aVertices[2] = OpenGl_Vec2(float(myViewWidth), 0.0f);
       aVertices[3] = OpenGl_Vec2(0.0f,               0.0f);
 
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color2.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color2.ChangeData();
+      aCorners[2] = myGradientParams.color1.ChangeData();
+      aCorners[3] = myGradientParams.color2.ChangeData();
       break;
     }
     case Aspect_GFM_CORNER4:
     {
-      aCorners[0] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[1] = myGradientParams.color2.xyz().ChangeData();
-      aCorners[2] = myGradientParams.color1.xyz().ChangeData();
-      aCorners[3] = myGradientParams.color2.xyz().ChangeData();
+      aCorners[0] = myGradientParams.color2.ChangeData();
+      aCorners[1] = myGradientParams.color2.ChangeData();
+      aCorners[2] = myGradientParams.color1.ChangeData();
+      aCorners[3] = myGradientParams.color2.ChangeData();
       break;
     }
     case Aspect_GFM_NONE:
@@ -348,9 +338,9 @@ Standard_Boolean OpenGl_BackgroundArray::createTextureArray (const Handle(OpenGl
 
   // Get texture parameters
   const Handle(OpenGl_Context)& aCtx = theWorkspace->GetGlContext();
-  const OpenGl_AspectFace* anAspectFace = theWorkspace->AspectFace();
-  GLfloat aTextureWidth  = (GLfloat )anAspectFace->TextureRes (aCtx)->SizeX();
-  GLfloat aTextureHeight = (GLfloat )anAspectFace->TextureRes (aCtx)->SizeY();
+  const OpenGl_Aspects* anAspectFace = theWorkspace->Aspects();
+  GLfloat aTextureWidth  = (GLfloat )anAspectFace->TextureSet (aCtx)->First()->SizeX();
+  GLfloat aTextureHeight = (GLfloat )anAspectFace->TextureSet (aCtx)->First()->SizeY();
 
   if (myFillMethod == Aspect_FM_CENTERED)
   {