Hello, everyone.
I have successfully compile VTK-9.1.0 to webassembly and it runs in docker fine.
Here is the issue when I need to show model on top of others.
On win11 local C++, it runs OK :
==============================================
vtkNew renderer;
-
vtkNew renderWindow;*
-
renderWindow->SetMultiSamples(0);*
-
renderWindow->AddRenderer(renderer);*
-
vtkNew renderWindowInteractor;*
-
renderWindowInteractor->SetRenderWindow(renderWindow);*
-
vtkNew style;*
-
renderWindowInteractor->SetInteractorStyle(style);*
-
style->SetDefaultRenderer(renderer);*
-
vtkSPtrNew(sphere, vtkSphereSource);*
-
sphere->SetCenter(0, 0, 0);*
-
sphere->SetRadius(1);*
-
sphere->Update();*
-
vtkSPtrNew(sphereMapper, vtkPolyDataMapper);*
-
sphereMapper->SetInputData(sphere->GetOutput());*
-
vtkSPtrNew(sphereActor, vtkActor);*
-
sphereActor->SetMapper(sphereMapper);*
-
sphereActor->GetProperty()->SetColor(1, 0, 0);*
-
const double units0 = -66000;*
-
sphereMapper->SetResolveCoincidentTopologyToPolygonOffset();*
-
sphereMapper->SetRelativeCoincidentTopologyLineOffsetParameters(0, units0);*
-
sphereMapper->SetRelativeCoincidentTopologyPolygonOffsetParameters(0, units0);*
-
sphereMapper->SetRelativeCoincidentTopologyPointOffsetParameter(units0);*
-
// Create pipeline*
-
vtkNew coneSource;*
-
coneSource->SetRadius(2);*
-
coneSource->SetHeight(4);*
-
coneSource->Update();*
-
vtkNew mapper;*
-
mapper->SetInputConnection(coneSource->GetOutputPort());*
-
vtkNew actor;*
-
actor->SetMapper(mapper);*
-
// Add the actors to the scene*
-
renderer->AddActor(sphereActor);*
-
renderer->AddActor(actor);*
-
// Start rendering app*
-
renderer->SetBackground(0.2, 0.3, 0.4);*
-
renderWindow->SetSize(400, 400);*
-
renderWindow->Render();*
-
// Start event loop*
-
renderWindowInteractor->Start();*
==========================================
But when I compile them into wasm and run in chrome , it crushs like:
Cone.wasm:0x4c76c Uncaught (in promise) RuntimeError: null function or function signature mismatch
at vtkOpenGLPolyDataMapper::UpdateShaders(vtkOpenGLHelper&, vtkRenderer*, vtkActor*) (Cone.wasm:0x4c76c)
at vtkOpenGLPolyDataMapper::RenderPieceDraw(vtkRenderer*, vtkActor*) (Cone.wasm:0x4f3f8)
at vtkOpenGLPolyDataMapper::RenderPiece(vtkRenderer*, vtkActor*) (Cone.wasm:0x4f773)
at vtkPolyDataMapper::Render(vtkRenderer*, vtkActor*) (Cone.wasm:0xb9592)
at vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*) (Cone.wasm:0x1b10f)
at vtkActor::RenderOpaqueGeometry(vtkViewport*) (Cone.wasm:0x9b0a6)
at vtkRenderer::UpdateOpaquePolygonalGeometry() (Cone.wasm:0xc4d8f)
at vtkOpenGLRenderer::DeviceRenderOpaqueGeometry(vtkFrameBufferObjectBase*) (Cone.wasm:0x65cea)
at vtkOpenGLRenderer::UpdateGeometry(vtkFrameBufferObjectBase*) (Cone.wasm:0x657c9)
at vtkOpenGLRenderer::DeviceRender() (Cone.wasm:0x65131)
Does anyone know this ? if I uncomment those “SetResolveCoincidentTopology” lines it can be run without error , but it is not what I want . I need the spere ALWAYS ON TOP of others.
How can I do ?
Thanks in advance and any advices is appreciated !
William