36 vtkNew<vtkPoints> points;
39 Vec3f bbox0 = scn->getLowerBound();
40 Vec3f bbox1 = scn->getUpperBound();
41 points->InsertNextPoint(bbox0[0], bbox0[1], bbox0[2]);
42 points->InsertNextPoint(bbox1[0], bbox1[1], bbox1[2]);
44 vtkNew<vtkPolyData> polyData;
45 polyData->SetPoints(points);
46 SetInputData(polyData);
55 if (!
m_module->isInitialized())
return;
59 if (node == NULL || !node->isVisible())
return;
61 auto pSet =
m_module->inPointSet()->getDataPtr();
62 auto verts = pSet->getPoints();
71 vtkNew<vtkPoints> tempVertData;
72 tempVertData->SetNumberOfPoints(verts.size());
74 vtkOpenGLRenderWindow* renWin = vtkOpenGLRenderWindow::SafeDownCast(ren->GetRenderWindow());
75 vtkOpenGLVertexBufferObjectCache* cache = renWin->GetVBOCache();
76 this->VBOs->CacheDataArray(
"vertexMC", tempVertData->GetData(), cache, VTK_FLOAT);
77 this->VBOs->BuildAllVBOs(cache);
78 vtkOpenGLVertexBufferObject* vertexBuffer = this->VBOs->GetVBO(
"vertexMC");
81 std::vector<unsigned int> indexArray(verts.size());
82 for (
unsigned int i = 0; i < indexArray.size(); i++)
85 this->Primitives[PrimitivePoints].IBO->Upload(indexArray, vtkOpenGLIndexBufferObject::ElementArrayBuffer);
86 this->Primitives[PrimitivePoints].IBO->IndexCount = indexArray.size();
89 error = cudaGraphicsGLRegisterBuffer(&
m_cudaVBO, vertexBuffer->GetHandle(), cudaGraphicsRegisterFlagsWriteDiscard);
98 error = cudaGraphicsMapResources(1, &
m_cudaVBO);
99 error = cudaGraphicsResourceGetMappedPointer(&cudaPtr, &size,
m_cudaVBO);
100 error = cudaMemcpy(cudaPtr, verts.begin(), verts.size() *
sizeof(
float) * 3, cudaMemcpyDeviceToDevice);
101 error = cudaGraphicsUnmapResources(1, &
m_cudaVBO);