我正在使用Visual Studio 2010,VTK 5.6並在不使用CMake的情況下配置我的項目。如何在不關閉VTK渲染窗口的情況下使代碼流動?
我正在處理數值計算,並希望在運行時使用VTK生成多個圖。從VTK網頁中給出的線條示例開始,我設法生成我想要的圖。問題在於,如果不關閉繪圖窗口,代碼不會繼續。
從我的「main.cpp」文件中,我發送命令到一個頭文件,VTK過程開始。
residualPlotter(x,xdim1d);
「residualPlotter」是生成圖的函數。它如下:
int residualPlotter(double* res, int size)
{
// Create a table with some points in it
vtkSmartPointer<vtkTable> table =
vtkSmartPointer<vtkTable>::New();
vtkSmartPointer<vtkFloatArray> arrX =
vtkSmartPointer<vtkFloatArray>::New();
arrX->SetName("X Axis");
table->AddColumn(arrX);
vtkSmartPointer<vtkFloatArray> arrF =
vtkSmartPointer<vtkFloatArray>::New();
arrF->SetName("Function");
table->AddColumn(arrF);
// Fill in the table with some example values
table->SetNumberOfRows(size);
for (int i = 0; i < size; ++i)
{
table->SetValue(i, 0, i);
table->SetValue(i, 1, res[i]);
}
// Set up the view
vtkSmartPointer<vtkContextView> view =
vtkSmartPointer<vtkContextView>::New();
view->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
view->GetRenderWindow()->SetSize(800,600);
// Add multiple line plots, setting the colors etc
vtkSmartPointer<vtkChartXY> chart =
vtkSmartPointer<vtkChartXY>::New();
view->GetScene()->AddItem(chart);
vtkPlot *line = chart->AddPlot(vtkChart::LINE);
line->SetInput(table, 0, 1);
line->SetColor(0, 100, 0, 255);
line->SetWidth(1.75);
// Set up an interactor and start
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(view->GetRenderWindow());
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
所以,我希望代碼繼續,而不需要關閉該窗口。我應該如何修改代碼?
謝謝大家。
您可以參考這裏的解決方案! http://stackoverflow.com/questions/2136711/vtk-window-thread-from-main-thread-c/33363593#33363593 –