1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-04 13:13:25 +03:00

0028407: Visualization - remove ::UpdateMode() from Graphic3d_StructureManager

This commit is contained in:
kgv
2017-01-30 13:09:22 +03:00
committed by apn
parent b0d96eb753
commit cfece3ef2e
21 changed files with 73 additions and 264 deletions

View File

@@ -887,7 +887,7 @@ void UserDrawObject::Compute (const Handle(PrsMgr_PresentationManager3d)& thePrs
aGroup->AddElement(anElem);
// invalidate bounding box of the scene
thePrsMgr->StructureManager()->Update (thePrsMgr->StructureManager()->UpdateMode());
thePrsMgr->StructureManager()->Update();
}
~~~~~
@@ -1200,6 +1200,13 @@ The follow AIS_InteractiveContext methods have been changed:
UpdateSelected, AddOrRemoveSelected, HilightSelected, UnhilightSelected, ClearSelected, ResetOriginalState,
SubIntensityOn, SubIntensityOff, FitSelected, EraseGlobal, ClearGlobal, ClearGlobalPrs.
In addition, the API for immediate viewer update has been removed from V3d_View and Graphic3d_StructureManager classes
(enumerations *Aspect_TypeOfUpdate* and *V3d_TypeOfUpdate*):
V3d::SetUpdateMode(), V3d::UpdateMode(), Graphic3d_StructureManager::SetUpdateMode(), Graphic3d_StructureManager::UpdateMode().
The argument theUpdateMode has been removed from methods Graphic3d_CView::Display(), ::Erase(), ::Update().
Method Graphic3d_CView::Update() does not redraw the view and does not re-compute structures anymore.
@subsection upgrade_720_Result_Of_BOP_On_Containers Result of Boolean operations on containers
* The result of Boolean operations on arguments of collection types (WIRE/SHELL/COMPSOLID) is now filtered from duplicating containers.

View File

@@ -1945,63 +1945,51 @@ The *V3d* package is basically a set of tools directed by commands from the vie
@subsubsection occt_visu_4_4_2 A programming example
This sample TEST program for the *V3d* Package uses primary packages *Xw* and *Graphic3d* and secondary packages *Visual3d, Aspect, Quantity, Phigs* and *math*.
This sample TEST program for the *V3d* Package uses primary packages *Xw* and *Graphic3d* and secondary packages *Visual3d, Aspect, Quantity* and *math*.
~~~~~
//Create a default display connection
Handle(Aspect_DisplayConnection) aDisplayConnection = new Aspect_DisplayConnection();
// Create a default display connection
Handle(Aspect_DisplayConnection) aDispConnection = new Aspect_DisplayConnection();
//Create a Graphic Driver from the default Aspect_DisplayConnection
Handle(OpenGl_GraphicDriver) GD = new OpenGl_GraphicDriver (aDisplayConnection);
// Create a Graphic Driver from the default Aspect_DisplayConnection
Handle(OpenGl_GraphicDriver) aGraphicDriver = new OpenGl_GraphicDriver (aDispConnection);
//Create a Viewer to this Driver
Handle(V3d_Viewer) VM = new V3d_Viewer(GD, 400.,
// Space size
V3d_Xpos,
// Default projection
Quantity_NOC_DARKVIOLET,
// Default background
V3d_ZBUFFER,
// Type of visualization
V3d_GOURAUD,
// Shading model
V3d_WAIT);
// Update mode
// Create a structure in this Viewer
Handle(Graphic3d_Structure) S = new Graphic3d_Structure(VM->Viewer()) ;
// Create a Viewer to this Driver
Handle(V3d_Viewer) VM = new V3d_Viewer (aGraphicDriver);
VM->SetDefaultBackgroundColor (Quantity_NOC_DARKVIOLET);
VM->SetDefaultViewProj (V3d_Xpos);
// Create a structure in this Viewer
Handle(Graphic3d_Structure) aStruct = new Graphic3d_Structure (VM->Viewer());
// Type of structure
S->SetVisual (Graphic3d_TOS_SHADING);
// Type of structure
aStruct->SetVisual (Graphic3d_TOS_SHADING);
// Create a group of primitives in this structure
Handle(Graphic3d_Group) G = new Graphic3d_Group(S) ;
Handle(Graphic3d_Group) aPrsGroup = new Graphic3d_Group (aStruct);
// Fill this group with one polygon of size 100
Graphic3d_Array1OfVertex Points(0,3) ;
Points(0).SetCoord(-100./2.,-100./2.,-100./2.) ;
Points(1).SetCoord(-100./2., 100./2.,-100./2.) ;
Points(2).SetCoord( 100./2., 100./2.,-100./2.) ;
Points(3).SetCoord( 100./2.,-100./2.,-100./2.) ;
Normal.SetCoord(0.,0.,1.) ;
G->Polygon(Points,Normal) ;
// Fill this group with one quad of size 100
Handle(Graphic3d_ArrayOfTriangleStrips) aTriangles = new Graphic3d_ArrayOfTriangleStrips (4);
aTriangles->AddVertex (-100./2., -100./2., 0.0);
aTriangles->AddVertex (-100./2., 100./2., 0.0);
aTriangles->AddVertex ( 100./2., -100./2., 0.0);
aTriangles->AddVertex ( 100./2., 100./2., 0.0);
aPrsGroup->Polygon (aTriangles);
// Create Ambient and Infinite Lights in this Viewer
Handle(V3d_AmbientLight) L1 = new V3d_AmbientLight
(VM,Quantity_NOC_GRAY50) ;
Handle(V3d_DirectionalLight) L2 = new V3d_DirectionalLight
(VM,V3d_XnegYnegZneg,Quantity_NOC_WHITE) ;
Handle(V3d_AmbientLight) aLight1 = new V3d_AmbientLight (VM, Quantity_NOC_GRAY50);
Handle(V3d_DirectionalLight) aLight2 = new V3d_DirectionalLight (VM, V3d_XnegYnegZneg, Quantity_NOC_WHITE);
// Create a 3D quality Window with the same DisplayConnection
Handle(Xw_Window) W = new Xw_Window(aDisplayConnection,"Test V3d",0.5,0.5,0.5,0.5) ;
Handle(Xw_Window) aWindow = new Xw_Window (aDispConnection, "Test V3d", 0.5, 0.5, 0.5, 0.5);
// Map this Window to this screen
W->Map() ;
// Map this Window to this screen
aWindow->Map();
// Create a Perspective View in this Viewer
Handle(V3d_View) aView = new V3d_View(VM);
Handle(V3d_View) aView = new V3d_View (VM);
aView->Camera()->SetProjectionType (Graphic3d_Camera::Projection_Perspective);
// Associate this View with the Window
aView ->SetWindow(W);
aView ->SetWindow (aWindow);
// Display ALL structures in this View
VM->Viewer()->Display();
// Finally update the Visualization in this View