MCPcopy Create free account
hub / github.com/Kitware/VTK / bindTexturedPolydataToRenderWindow

Function bindTexturedPolydataToRenderWindow

IO/Import/vtkOBJImporterInternals.cxx:356–530  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

354}
355
356bool bindTexturedPolydataToRenderWindow(vtkRenderWindow* renderWindow, vtkRenderer* renderer,
357 vtkOBJPolyDataProcessor* reader, vtkActorCollection* actorCollection)
358{
359 if (nullptr == (renderWindow))
360 {
361 vtkErrorWithObjectMacro(reader, "RenderWindow is null, failure!");
362 return false;
363 }
364 if (nullptr == (renderer))
365 {
366 vtkErrorWithObjectMacro(reader, "Renderer is null, failure!");
367 return false;
368 }
369 if (nullptr == (reader))
370 {
371 vtkErrorWithObjectMacro(reader, "vtkOBJPolyDataProcessor is null, failure!");
372 return false;
373 }
374
375 reader->actor_list.clear();
376 reader->actor_list.reserve(reader->GetNumberOfOutputPorts());
377 actorCollection->RemoveAllItems();
378
379 // keep track of textures used and if multiple parts use the same
380 // texture, then have the actors use the same texture. This saves memory
381 // etc and makes exporting more efficient.
382 std::map<std::string, vtkSmartPointer<vtkTexture>> knownTextures;
383
384 for (int port_idx = 0; port_idx < reader->GetNumberOfOutputPorts(); port_idx++)
385 {
386 vtkPolyData* objPoly = reader->GetOutput(port_idx);
387
388 vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
389 mapper->SetInputData(objPoly);
390 mapper->SetColorModeToDirectScalars();
391
392 vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
393 actor->SetMapper(mapper);
394
395 vtkDebugWithObjectMacro(reader,
396 "Grabbed objPoly " << objPoly << ", port index " << port_idx << "\n"
397 << "numPolys = " << objPoly->GetNumberOfPolys()
398 << " numPoints = " << objPoly->GetNumberOfPoints());
399
400 // For each named material, load and bind the texture, add it to the renderer
401
402 std::string textureFilename = reader->GetTextureFilename(port_idx);
403 if (!textureFilename.empty())
404 {
405 auto kti = knownTextures.find(textureFilename);
406 if (kti == knownTextures.end())
407 {
408 vtkSmartPointer<vtkImageReader2> imgReader;
409 if (vtksys::SystemTools::FileIsFullPath(textureFilename))
410 {
411 imgReader.TakeReference(
412 vtkImageReader2Factory::CreateImageReader2(textureFilename.c_str()));
413 }

Callers 1

ReadDataMethod · 0.85

Calls 15

GetNumberOfPolysMethod · 0.80
GetMaterialMethod · 0.80
SetDiffuseColorMethod · 0.80
SetSpecularColorMethod · 0.80
SetAmbientColorMethod · 0.80
SetSpecularPowerMethod · 0.80
NewFunction · 0.50
clearMethod · 0.45
reserveMethod · 0.45
RemoveAllItemsMethod · 0.45

Tested by

no test coverage detected