私はVisual Studio 2010、VTK 5.6を使っていて、CMakeを使わずにプロジェクトを設定しています。VTKレンダリングウィンドウを閉じずにコードフローを作成する方法は?
私は数値計算を扱っており、VTKを使用してランタイム中にいくつかのプロットを生成したいと考えています。 VTKのWebページで与えられた線グラフの例から、私は自分が望むプロットを生成することができました。問題は、プロットウィンドウを閉じることなくコードが続行されないことです。
私の "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 –