myNbStructures (0)
{
// insert default priority layer
- myLayers.Append (OpenGl_PriorityList (myNbPriorities));
+ myLayers.Append (OpenGl_Layer (myNbPriorities));
myLayerIds.Bind (0, myLayers.Length());
}
//purpose :
//=======================================================================
-OpenGl_PriorityList& OpenGl_LayerList::defaultLayer()
+OpenGl_Layer& OpenGl_LayerList::defaultLayer()
{
return myLayers.ChangeValue (1);
}
return;
// add the new layer
- myLayers.Append (OpenGl_PriorityList (myNbPriorities));
+ myLayers.Append (OpenGl_Layer (myNbPriorities));
myLayerIds.Bind (theLayerId, myLayers.Length());
}
return myLayerIds.IsBound (theLayerId);
}
+//=======================================================================
+//function : Layer
+//purpose :
+//=======================================================================
+OpenGl_Layer& OpenGl_LayerList::Layer (const Standard_Integer theLayerId)
+{
+ return myLayers.ChangeValue (myLayerIds.Find (theLayerId));
+}
+
+//=======================================================================
+//function : Layer
+//purpose :
+//=======================================================================
+const OpenGl_Layer& OpenGl_LayerList::Layer (const Standard_Integer theLayerId) const
+{
+ return myLayers.Value (myLayerIds.Find (theLayerId));
+}
+
//=======================================================================
//function : RemoveLayer
//purpose :
Standard_Integer aRemovePos = myLayerIds.Find (theLayerId);
// move all displayed structures to first layer
- const OpenGl_PriorityList& aList = myLayers.Value (aRemovePos);
- defaultLayer ().Append (aList);
+ const OpenGl_PriorityList& aList = myLayers.Value (aRemovePos).PriorityList();
+ defaultLayer ().PriorityList().Append (aList);
// remove layer
myLayers.Remove (aRemovePos);
{
// add structure to associated layer,
// if layer doesn't exists, display structure in default layer
- OpenGl_PriorityList& aList = !HasLayer (theLayerId) ? defaultLayer () :
- myLayers.ChangeValue (myLayerIds.Find (theLayerId));
+ OpenGl_PriorityList& aList = !HasLayer (theLayerId) ? defaultLayer ().PriorityList() :
+ myLayers.ChangeValue (myLayerIds.Find (theLayerId)).PriorityList();
aList.Add (theStructure, thePriority);
myNbStructures++;
Standard_Integer aSeqPos = !HasLayer (theLayerId) ?
1 : myLayerIds.Find (theLayerId);
- OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos);
+ OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
// remove structure from associated list
// if the structure is not found there,
OpenGl_SequenceOfLayers::Iterator anIts;
for (anIts.Init (myLayers); anIts.More (); anIts.Next (), aSeqId++)
{
- OpenGl_PriorityList& aScanList = anIts.ChangeValue ();
+ OpenGl_PriorityList& aScanList = anIts.ChangeValue ().PriorityList();
if (aSeqPos == aSeqId)
continue;
Standard_Integer aSeqPos = !HasLayer (theOldLayerId) ?
1 : myLayerIds.Find (theOldLayerId);
- OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos);
+ OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
Standard_Integer aPriority;
// take priority and remove structure from list found by <theOldLayerId>
void OpenGl_LayerList::Render (const Handle(OpenGl_Workspace) &theWorkspace) const
{
+ int aDefaultDepthFunc;
+ glGetIntegerv (GL_DEPTH_FUNC, &aDefaultDepthFunc);
+
OpenGl_SequenceOfLayers::Iterator anIts;
for(anIts.Init (myLayers); anIts.More (); anIts.Next ())
{
- const OpenGl_PriorityList& aList = anIts.Value ();
- if (aList.NbStructures () > 0)
+ const OpenGl_Layer& aLayer = anIts.Value ();
+ if (aLayer.PriorityList().NbStructures () > 0)
{
- // separate depth buffers
- glClear (GL_DEPTH_BUFFER_BIT);
-
- // render priority list
- aList.Render (theWorkspace);
+ // render layer
+ aLayer.Render (theWorkspace, aDefaultDepthFunc);
}
}
}