0031096: Visualization, TKOpenGl - support metallic-roughness texture mapping
[occt.git] / src / OpenGl / OpenGl_TextureSet.cxx
index bc42d12..e676cd7 100644 (file)
 IMPLEMENT_STANDARD_RTTIEXT(OpenGl_TextureSet, Standard_Transient)
 
 // =======================================================================
+// function : OpenGl_TextureSet
+// purpose  :
+// =======================================================================
+OpenGl_TextureSet::OpenGl_TextureSet (const Handle(OpenGl_Texture)& theTexture)
+: myTextures (0, 0),
+  myTextureSetBits (Graphic3d_TextureSetBits_NONE)
+{
+  if (!theTexture.IsNull())
+  {
+    myTextures.ChangeFirst().Texture = theTexture;
+    myTextures.ChangeFirst().Unit = theTexture->Sampler()->Parameters()->TextureUnit();
+  }
+}
+
+// =======================================================================
 // function : IsModulate
 // purpose  :
 // =======================================================================
 bool OpenGl_TextureSet::IsModulate() const
 {
   return myTextures.IsEmpty()
-      || myTextures.First().IsNull()
-      || myTextures.First()->Sampler()->Parameters()->IsModulate();
+      || myTextures.First().Texture.IsNull()
+      || myTextures.First().Texture->Sampler()->Parameters()->IsModulate();
 }
 
 // =======================================================================
@@ -41,10 +56,10 @@ bool OpenGl_TextureSet::HasNonPointSprite() const
   }
   else if (myTextures.Size() == 1)
   {
-    return !myTextures.First().IsNull()
-        && !myTextures.First()->IsPointSprite();
+    return !myTextures.First().Texture.IsNull()
+        && !myTextures.First().Texture->IsPointSprite();
   }
-  return !myTextures.First().IsNull();
+  return !myTextures.First().Texture.IsNull();
 }
 
 // =======================================================================
@@ -54,6 +69,6 @@ bool OpenGl_TextureSet::HasNonPointSprite() const
 bool OpenGl_TextureSet::HasPointSprite() const
 {
   return !myTextures.IsEmpty()
-      && !myTextures.Last().IsNull()
-      &&  myTextures.Last()->IsPointSprite();
+      && !myTextures.Last().Texture.IsNull()
+      &&  myTextures.Last().Texture->IsPointSprite();
 }