1.管线执行模性
请求是VTK执行管线的一个基本操作,一个管线执行模型由多个请求共同完成。管线建立完毕,当显示调用一个Filter的Update()函数时,该Filter的vtkExecutive子类执行对象会产生一系列请求,并在管线中传递。例如,一个Writer对象执行Update()时,会调用this->GetExecutive()->Update()来更新管线。此时,执行对象会产生多个请求,并在管线中传递,并由vtkExecutice::ProcessRequest()进行处理。管线中处理一个Filter请求时,通常会先传递至其提够数据输入的上游Filter,待上游Filter处理完请求再在当前Filter中进行处理。执行对象在处理请求时,通常需要算法对象的协助来完成。执行对象会将请求发送至算法对象,并由vtkAlgorithm::ProcessRequest()进行处理。所有Filter类中都会实现ProcessRequest函数,并处理相关请求。与此同时,输入/输出管线信息对象也会传递到该函数中,然后根据相关的参数设置相关的处理。算法对象不允许从执行对象中再次获取其他信息。因此,管线执行流程可以这样表述:请求首先在管线末端Filter的执行对象中产生,并不断向上游Filter进行传递,直至管线前端Filter。管线前端Filter的算法对象对请求进行处理,产生相应的数据和信息,并不断传递至下游的Filter以便完成请求处理,直到完成请求的发起者。过程如下如所示: