+void SetZLayerSettings( const Handle_V3d_Viewer& theViewer3d, int theLayerId, bool theIsOrdered )
+{
+ if ( theViewer3d.IsNull() || theLayerId < 0 ) {
+ return;
+ }
+
+ Graphic3d_ZLayerSettings aSettings = theViewer3d->ZLayerSettings( theLayerId );
+ // enable depth write
+ aSettings.EnableSetting( Graphic3d_ZLayerDepthWrite );
+ // disable depth clear
+ aSettings.DisableSetting( Graphic3d_ZLayerDepthClear );
+ if ( theIsOrdered ) {
+ // disable depth test
+ aSettings.DisableSetting( Graphic3d_ZLayerDepthTest );
+ // disable depth offset
+ aSettings.DisableSetting( Graphic3d_ZLayerDepthOffset );
+ } else {
+ // enable depth test
+ aSettings.EnableSetting( Graphic3d_ZLayerDepthTest );
+ // set depth offset
+ aSettings.SetDepthOffsetPositive();
+ }
+
+ // set new settings
+ theViewer3d->SetZLayerSettings( theLayerId, aSettings );
+}
+
+int CreateTopZLayer( const Handle_V3d_Viewer& theViewer3d )
+{
+ int aTopZLayer = -1;
+
+ if ( theViewer3d && !theViewer3d->AddZLayer( aTopZLayer ) ) {
+ aTopZLayer = -1;
+ }
+
+ return aTopZLayer;
+}
+
+