Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用VTK连接流媒体点_C++_User Interface_Graphics_3d_Vtk - Fatal编程技术网

C++ 使用VTK连接流媒体点

C++ 使用VTK连接流媒体点,c++,user-interface,graphics,3d,vtk,C++,User Interface,Graphics,3d,Vtk,我有一个在循环中调用的函数,在每次传递时,它给出(x,y,z)一个3D点。我试图使用VTK实时连接这些点,但无法在每帧后刷新渲染窗口。如果我退出循环,我会看到一堆线 基本上,这就是我正在做的: // Create a vtkPoints object to store the points in it vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New(); vtkSmartPointe

我有一个在循环中调用的函数,在每次传递时,它给出(x,y,z)一个3D点。我试图使用VTK实时连接这些点,但无法在每帧后刷新渲染窗口。如果我退出循环,我会看到一堆线

基本上,这就是我正在做的:

// Create a vtkPoints object to store the points in it
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();

vtkSmartPointer<vtkPolyLine> polyLine = vtkSmartPointer<vtkPolyLine>::New();

// Create a cell array to store the lines in   
vtkSmartPointer<vtkCellArray> lines = vtkSmartPointer<vtkCellArray>::New();

// Create a polydata to store everything in
vtkSmartPointer<vtkPolyData> linesPolyData = vtkSmartPointer<vtkPolyData>::New();

// Setup actor and mapper
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();

vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);

// Setup render window, renderer, and interactor
vtkSmartPointer<vtkRenderer> renderer =  vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =       vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =   vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderer->AddActor(actor);
renderWindow->Render();
renderer->Render();

int numpoints = 0;

while(some_condition)
{
  call_function(&x,&y,&z);
  double point[3] = {0.0, 0.0, 0.0};
  point[0] = (float)x;
  point[1] = (float)y;
  point[2] = (float)z;

  numpoints++;
  points->InsertNextPoint(point);

  polyLine->GetPointIds()->SetNumberOfIds(numpoints);
  for(unsigned int i = 0; i < num_points; i++)
{
    polyLine->GetPointIds()->SetId(i,i);                        
}

  lines->InsertNextCell(polyLine);

// Add the points to the dataset
linesPolyData->SetPoints(points);

// Add the lines to the dataset
linesPolyData->SetLines(lines);

#if VTK_MAJOR_VERSION <= 5
mapper->SetInput(linesPolyData);
#else
mapper->SetInputData(linesPolyData);
#endif

linesPolyData->Modified();
linesPolyData->Update();

renderWindow->Render();
renderer->Render();

renderWindowInteractor->Enable();

check_loop_exit_condition(); 
}
//创建vtkPoints对象以在其中存储点
vtkSmartPointer points=vtkSmartPointer::New();
vtkSmartPointer多段线=vtkSmartPointer::New();
//创建一个单元格数组以存储其中的行
vtkSmartPointer line=vtkSmartPointer::New();
//创建一个polydata以存储其中的所有内容
vtkSmartPointer linesPolyData=vtkSmartPointer::New();
//设置参与者和映射器
vtkSmartPointer映射器=vtkSmartPointer::New();
vtkSmartPointer=vtkSmartPointer::New();
actor->SetMapper(映射器);
//设置渲染窗口、渲染器和交互器
vtkSmartPointer=vtkSmartPointer::New();
vtkSmartPointer renderWindow=vtkSmartPointer::New();
renderWindow->AddRenderer(渲染器);
vtkSmartPointer renderWindowInteractor=vtkSmartPointer::New();
RenderWindowWinterActor->SetRenderWindow(renderWindow);
渲染器->AddActor(actor);
renderWindow->Render();
渲染器->渲染();
int numpoints=0;
while(某些情况)
{
调用函数&x、y和z);
双点[3]={0.0,0.0,0.0};
点[0]=(浮动)x;
点[1]=(浮动)y;
点[2]=(浮动)z;
numpoints++;
点->插入下一点(点);
多段线->GetPointIds()->SetNumberOfIds(numpoints);
for(无符号整数i=0;iGetPointId()->SetId(i,i);
}
lines->InsertNextCell(多段线);
//将点添加到数据集
linesPolyData->设定点(点);
//将行添加到数据集
linesPolyData->设置行(行);
#如果VTK\U主版本设置输入(linesPolyData);
#否则
映射器->设置输入数据(linesPolyData);
#恩迪夫
linesPolyData->Modified();
linesPolyData->Update();
renderWindow->Render();
渲染器->渲染();
renderWindowInteractor->Enable();
检查循环退出条件();
}
如果我在循环之外执行
renderer->Render()
,我将获得所有的行(或者至少我认为是这样)。有人能找出我哪里出了问题吗?

从,看来你不应该直接打电话

renderer->Render();
你只需要打电话

renderWindow->Render();
从,看来你不应该直接打电话

renderer->Render();
你只需要打电话

renderWindow->Render();