[vtkusers] How to visualize thousands of actors with good performance

Sean McBride sean at rogue-research.com
Tue Sep 28 13:02:42 EDT 2010


On Tue, 28 Sep 2010 15:04:54 +0200, Affolter Martin said:

>Thanks for your suggestion. I had tried static mappers before,
>unfortunately without the Update()-call. Now I understand why the faces
>didn't show the first time (only edges and vertices). Anyway I tried it
>again just now. There is a slight performance increase noticable, but
>still no match to the performance in VTK 4.4., where the scene (8000
>actors) can be rotated smoothly.

Have you tried profiling your app?  Where are the bottlenecks?

(What OS are you on?  If Mac OS X, you can use Instruments.app to
measure where your bottlenecks are.  I'm sure other OSes have similar tools.)

In our case, when we have about 10000 actors, and rotate the scene, the
heaviest stack trace is:

main
...
-[vtkCocoaGLView drawRect:]
vtkRenderWindow::Render()
vtkRenderWindow::DoAARender()
vtkRenderWindow::DoFDRender()
vtkRenderWindow::DoStereoRender()
vtkRendererCollection::Render()
vtkRenderer::Render()
vtkOpenGLRenderer::DeviceRender()
vtkRenderer::UpdateGeometry()
vtkActor::RenderOpaqueGeometry(vtkViewport*)
vtkOpenGLActor::Render(vtkRenderer*, vtkMapper*)
vtkPolyDataMapper::Render(vtkRenderer*, vtkActor*)
vtkPainterPolyDataMapper::RenderPiece(vtkRenderer*, vtkActor*)
vtkDefaultPainter::Render(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkPainter::Render(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkPainter::RenderInternal(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkPainter::Render(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkOpenGLScalarsToColorsPainter::RenderInternal(vtkRenderer*, vtkActor*,
unsigned long, bool)
vtkPainter::RenderInternal(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkPainter::Render(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkOpenGLClipPlanesPainter::RenderInternal(vtkRenderer*, vtkActor*,
unsigned long, bool)
vtkPainter::RenderInternal(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkPainter::Render(vtkRenderer*, vtkActor*, unsigned long, bool)
vtkOpenGLDisplayListPainter::RenderInternal(vtkRenderer*, vtkActor*,
unsigned long, bool)
gleCallList

-- 
____________________________________________________________
Sean McBride, B. Eng                 sean at rogue-research.com
Rogue Research                        www.rogue-research.com 
Mac Software Developer              Montréal, Québec, Canada





More information about the vtkusers mailing list