上一节,我们讲到最后:不知道它是否属于,这里的xml_name为RenderView
rendering.__dict__[xmlName]
然而我在Paraview的源代码中找到这样一个类,它叫做vtkSMRenderViewProxy,它的父类为vtkSMViewProxy,这个类在ParaviewCore/Servermanager/Rendering/文件夹下。在它的父类中有这个方法StillRender()。它的代码如下
头文件中:
// Renders the view using full resolution.
virtual void StillRender();
可以看到这个方法是采用全分辨率渲染view
源文件中:
void vtkSMViewProxy::StillRender()
{
// bug 0013947
// on Mac OSX don't render into invalid drawable, all subsequent
// OpenGL calls fail with invalid framebuffer operation.
if (this->IsContextReadyForRendering() == false)//判断当前window是否可画
{
return;
}
int interactive = 0;
this->InvokeEvent(vtkCommand::StartEvent, &interactive);
this->GetSession()->PrepareProgress();
// We call update separately from the render. This is done so that we don't//我们单独调用render的更新。这样做之后,我们不会得到GUI的任何同步的信息,这归咎
// get any synchronization issues with GUI responding to the data-updated于数>//据更新事件,它是由一些数据信息请求而实现的。如果这些发生时,在服务器端正在
// event by making some data information requests(for example). If those执行StillRender或者InteractiveRender,则将会造成死锁。
// happen while StillRender/InteractiveRender is being executed on the server
// side then we get deadlocks.
this->Update();
vtkTypeUInt32 render_location = this->PreRender(interactive==1);
if (this->ObjectsCreated)
{
vtkClientServerStream stream;
stream << vtkClientServerStream::Invoke
<< VTKOBJECT(this)
<< "StillRender"
<< vtkClientServerStream::End;
this->ExecuteStream(stream, false, render_location);
}
this->PostRender(interactive==1);
this->GetSession()->Clea