经过前几天的学习和分析,发现在vtk中的数据传输部分的执行不知道是不是我没有理解好,还是就是没有执行。因此今天决定回到Paraview层面来看它的整个的并行调度:
/ParaviewCore/ClientSeverCore/Rendering下一些有意思的文件:
vtkPVDataDeliveryManager::这个类管理几何结构的传递(给Rendering)。它被vtkPVRenderView使用去管理把几何结构提取到渲染发生的节点上。这个类帮助我们统一所有的提取各种类型的几何类型数据到所有节点的代码,也包括一些特质,像把提取到所有节点,把数据按组合需求重新划分等。
vtkPVRenderView::对于Paraview与vtkRenderview等效,vtkRenderview控制各种模式下多边形的Paraview渲染的操作。vtkPVRenderview必须实例化在所有的相关的进程中。vtkPVRenderview使用什么进程已经被创建的信息去决定渲染的哪部分发生在哪个进程上。
有一个类vtkObject,这个类需要看一下。
下面是vtkPVRenderView的函数分析;
vtkPVDataDeliveryManager* vtkPVRenderView::GetDeliveryManager():获得这个类中的vtkPVDataDeliveryManager,说明vtkPVDataDeliveryManager是 vtkPVRenderView中用到的一个参数。根据上面它是用来做数据传递的。所以后面数据部分肯定会用到。
vtkPVRenderView::SetUseOffscreenRendering(bool use_offscreen):用来控制是否使用OffscreenRendering。
void vtkPVRenderView::Initialize(unsigned int id):初始化,设置这个view的vtkPVSynchronizedRenderWindows,给其添加RenderWindow,3个Renderer:这个RenderView的renderer,这个的NonCompositedRenderer,还有这个的OrientationWidget的renderer。初始化session。还有父类,参数id标记所有的量,同一个id说明是同一个RenderView的量。初始化了之后设置自己的Identifier为这个id,这样就可以检测是否已经初始化过了。
void vtkPVRenderView::AddRepresentationInternal(vtkDataRepresentation* rep):把所给的Representation注册到DeliveryManager中,并且在ItemMap根据Representation的UniqueIdentifier在其中加上两个item,这两个item的representation都是这个所给的Representation。并执行父类的这个函数。
void vtkPVRenderView::RemoveRepresentationInternal(vtkDataRepresentation* rep):DeliveryManager中取消注册。
void vtkPVRenderView::RegisterPropForHardwareSelection(vtkPVDataRepresentation* repr, vtkProp* prop):把这个prop的id设为最后一个+1,并且设置这个id下的representation为这个repr。其实也就是把prop和representation对应起来。
void vtkPVRenderView::UnRegisterPropForHardwareSelection(vtkPVDataRepresentation* repr, vtkProp* prop):去掉注册
void vtkPVRenderView::AddPropToRenderer(vtkProp* prop):在这个vtkPVRenderView的RenderView中的Renderer中添加这个prop,并且给这个prop中加上这个Renderer。
void vtkPVRenderView::RemovePropFromRenderer(vtkProp* prop):互相去掉
vtkRenderer* vtkPVRenderView::GetRenderer():返回这个RenderView中的Renderer
void vtkPVRenderView::SetActiveCamera(vtkCamera* camera):设置这个RenderView中的Renderer的ActiveCamera和NonCompositedRenderer的Renderer的ActiveCamera。