I’ve subclassed vtkAbstractPolyDataReader to “GmtGridReader” that reads an x,y grid of elevations. I pass the output of the reader through a vtkDelaunay2D filter before displaying it. However when I read and filter the data and try to render it, vtkRenderWindow::Render() blocks for more than seven minutes, displaying a white background, then finally displaying the surface against a black background. Without seeing details of my reader code yet, can someone see an error in this main() code, i.e. does the pipeline look correct? Am I doing something that is very inefficient?
My dataset consists of 1613850 points, running on Intel I5 7200U dual-core CPU with Intel Corporation HD Graphics 620. Seven minutes seems extremely slow!
vtkSmartPointer<GmtGridReader> reader =
vtkSmartPointer<GmtGridReader>::New();
reader->SetFileName ( filePath.c_str() );
std::cout << "reader->Update()" << std::endl;
reader->Update();
vtkSmartPointer<vtkDelaunay2D> delaunay =
vtkSmartPointer<vtkDelaunay2D>::New();
delaunay->SetInputConnection(reader->GetOutputPort());
// Create mapper
std::cout << "create mapper" << std::endl;
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
std::cout << "mapper->SetInputConnection()" << std::endl;
mapper->SetInputConnection(delaunay->GetOutputPort());
// Create actor
std::cout << "create actor" << std::endl;
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
// Assign mapper to actor
std::cout << "assign mapper to actor" << std::endl;
actor->SetMapper(mapper);
// Create renderer
std::cout << "create renderer" << std::endl;
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
// Create renderWindow
std::cout << "create renderWindow" << std::endl;
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
// Add renderer to the renderWindow
std::cout << "add renderer to renderWindow" << std::endl;
renderWindow->AddRenderer(renderer);
// Create renderWindowInteractor
std::cout << "create renderWindowInteractor" << std::endl;
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
std::cout << "renderWindowInteractor->SetRenderWindow()" << std::endl;
renderWindowInteractor->SetRenderWindow(renderWindow);
// Add actor to the renderer
std::cout << "rendererr->AddActor()" << std::endl;
renderer->AddActor(actor);
// renderer->SetBackground(.2, .3, .4);
renderer->SetBackground(0., 0., 0.);
std::cout << "renderWindow->Render()" << std::endl;
renderWindow->Render();
std::cout << "renderWindowInteractor->Start()" << std::endl;
renderWindowInteractor->Start();