49 if (!
m_module->isInitialized())
return;
53 if (node == NULL || !node->isVisible())
return;
55 auto mesh =
m_module->inTriangleSet()->getDataPtr();
56 auto& faces = mesh->getTriangles();
57 auto& verts = mesh->getPoints();
66 vtkNew<vtkPoints> tempVertData;
67 tempVertData->SetNumberOfPoints(verts.size());
69 vtkOpenGLRenderWindow* renWin = vtkOpenGLRenderWindow::SafeDownCast(ren->GetRenderWindow());
70 vtkOpenGLVertexBufferObjectCache* cache = renWin->GetVBOCache();
71 this->VBOs->CacheDataArray(
"vertexMC", tempVertData->GetData(), cache, VTK_FLOAT);
72 this->VBOs->BuildAllVBOs(cache);
73 vtkOpenGLVertexBufferObject* vertexBuffer = this->VBOs->GetVBO(
"vertexMC");
76 this->Primitives[PrimitiveTris].IBO;
77 std::vector<unsigned int> indexArray(faces.size() * 3);
78 this->Primitives[PrimitiveTris].IBO->Upload(indexArray, vtkOpenGLIndexBufferObject::ElementArrayBuffer);
79 this->Primitives[PrimitiveTris].IBO->IndexCount = indexArray.size();
80 vtkOpenGLIndexBufferObject* indexBuffer = this->Primitives[PrimitiveTris].IBO;
83 error = cudaGraphicsGLRegisterBuffer(&
m_cudaVBO, vertexBuffer->GetHandle(), cudaGraphicsRegisterFlagsWriteDiscard);
85 error = cudaGraphicsGLRegisterBuffer(&
m_cudaIBO, indexBuffer->GetHandle(), cudaGraphicsRegisterFlagsWriteDiscard);
91 error = cudaGraphicsMapResources(1, &
m_cudaIBO);
92 error = cudaGraphicsResourceGetMappedPointer(&cudaPtr, &size,
m_cudaIBO);
93 error = cudaMemcpy(cudaPtr, faces.begin(), faces.size() *
sizeof(
unsigned int) * 3, cudaMemcpyDeviceToDevice);
94 error = cudaGraphicsUnmapResources(1, &
m_cudaIBO);
104 error = cudaGraphicsMapResources(1, &
m_cudaVBO);
106 error = cudaGraphicsResourceGetMappedPointer(&cudaPtr, &size,
m_cudaVBO);
107 error = cudaMemcpy(cudaPtr, verts.begin(), verts.size() *
sizeof(
float) * 3, cudaMemcpyDeviceToDevice);
108 error = cudaGraphicsUnmapResources(1, &
m_cudaVBO);