Paraview Parallel模式下的文件解析(三)

本文深入分析了Paraview的并行调度,重点探讨了vtkPVDataDeliveryManager和vtkPVRenderView在数据传递和渲染中的作用。vtkPVRenderView负责管理渲染过程,包括数据传递、渲染器设置和交互模式等功能。通过vtkPVRenderView的各个函数,揭示了数据在并行环境中的传输和处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过前几天的学习和分析,发现在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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值