mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0024637: Visualization - clean up implementation of rendering in immediate mode
Remove unused flag "DoubleBuf". Remove Visual3d_TransientManager "class" (functionality moved to PrsMgr_PresentationManager). Remove unused "Add" immediate mode. V3d_View class - remove methods ::TransientManagerBeginDraw(), ::TransientManagerClearDraw(), ::TransientManagerBeginAddDraw(). Add method ::RedrawImmediate() to redraw only immediate presentations. OpenGl_GraphicDriver - add methods ::DisplayImmediateStructure(), ::EraseImmediateStructure(), ::RedrawImmediate(). OpenGl_View - manage list of immediate structures. OpenGl_Workspace - automate rendering workflow of immediate + persistent layers. Merge PrsMgr_PresentationManager3d class into PrsMgr_PresentationManager. Mark PrsMgr_PresentationManager3d as alias to PrsMgr_PresentationManager to simplify porting. Prs3d_Presentation - remove unused field myStruct. Prs3d_PresentationShadow - shadow link to existing presentation with custom attributes. Graphic3d_Structure::Highlight() - do not register undisplayed structure in structure manager. AIS_InteractiveContext, AIS_LocalContext add flag to prevent view update into methods ::MoveTo(), ::HilightNextDetected(), ::HilightPreviousDetected() to allow update of customized immediate structures before redraw but after ::MoveTo(). Remove unused method AIS_InteractiveContext::Drag(). StdSelect_ViewerSelector3d do not user immediate mode in methods ::DisplayAreas(), ::ClearAreas(), ::ClearSensitive(), ::DisplaySensitive(), GridEcho - update value in StdSelect_ViewerSelector3d::Pick() instead of V3d_View::Compute(). Do not use global variable for GridEcho vertex. Redraw immediate mode not within GridEcho but at AIS_InteractiveContext, AIS_LocalContext layer. V3d_View::ToPixMap() - disable autoupdate during FitAll. Avoid Redraw() into FBO without ImmediateModeDrawToFront flag. PrsMgr_PresentationManager stores list of temporary immediate presentations, automatically cleared within BeginImmediateMode() call. Methods with ambiguous names have been renamed (new names now consistent with pre-existed method names in AIS_LocalContext class): - BeginDraw -> BeginImmediateDraw - EndDraw -> EndImmediateDraw Remove now useless Remove() method (and ImmediateRemove() in AIS). Visual3d_View now stores map of displayed immediate presentations. ViewerTest_EventManager - eliminate double redraw in selection methods. Fix warning
This commit is contained in:
@@ -57,6 +57,34 @@ Graphic3d_Structure::Graphic3d_Structure (const Handle(Graphic3d_StructureManage
|
||||
UpdateStructure (aAspectLine3d, aAspectText3d, aAspectMarker3d, aAspectFillArea3d);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//function : Graphic3d_Structure
|
||||
//purpose :
|
||||
//=============================================================================
|
||||
Graphic3d_Structure::Graphic3d_Structure (const Handle(Graphic3d_StructureManager)& theManager,
|
||||
const Handle(Graphic3d_Structure)& thePrs)
|
||||
: myStructureManager (theManager.operator->()),
|
||||
myFirstStructureManager (theManager.operator->()),
|
||||
myComputeVisual (thePrs->myComputeVisual),
|
||||
myHighlightColor (thePrs->myHighlightColor),
|
||||
myHighlightMethod (thePrs->myHighlightMethod),
|
||||
myOwner (thePrs->myOwner),
|
||||
myVisual (thePrs->myVisual)
|
||||
{
|
||||
myCStructure = thePrs->myCStructure->ShadowLink (theManager);
|
||||
|
||||
// default aspects
|
||||
Handle(Graphic3d_AspectLine3d) aAspectLine3d = new Graphic3d_AspectLine3d();
|
||||
Handle(Graphic3d_AspectText3d) aAspectText3d = new Graphic3d_AspectText3d();
|
||||
Handle(Graphic3d_AspectMarker3d) aAspectMarker3d = new Graphic3d_AspectMarker3d();
|
||||
Handle(Graphic3d_AspectFillArea3d) aAspectFillArea3d = new Graphic3d_AspectFillArea3d();
|
||||
theManager->PrimitivesAspect (aAspectLine3d, aAspectText3d, aAspectMarker3d, aAspectFillArea3d);
|
||||
aAspectFillArea3d->SetPolygonOffsets (Aspect_POM_Fill, 1.0, 0.0);
|
||||
|
||||
// update the associated CStructure
|
||||
UpdateStructure (aAspectLine3d, aAspectText3d, aAspectMarker3d, aAspectFillArea3d);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
//function : Destroy
|
||||
//purpose :
|
||||
@@ -284,7 +312,10 @@ void Graphic3d_Structure::Highlight (const Aspect_TypeOfHighlightMethod theMetho
|
||||
SetDisplayPriority (Structure_MAX_PRIORITY - 1);
|
||||
|
||||
GraphicHighlight (theMethod);
|
||||
myStructureManager->Highlight (this, theMethod);
|
||||
if (myCStructure->stick)
|
||||
{
|
||||
myStructureManager->Highlight (this, theMethod);
|
||||
}
|
||||
|
||||
Update();
|
||||
}
|
||||
|
Reference in New Issue
Block a user