views:

266

answers:

1

I've implemented a plotter using wxGraphicsContext. The development was done using wxGTK, and the graphics was very fast.

Then I switched to Windows (XP) using wxWidgets 2.9.0. And the same code is extremely slow. It takes about 350 ms to render a frame. Since the user is able to drag the plotter with the mouse to navigate it feels very sluggish with such a slow update rate.

I've tried to implement some parts using wxDC and benchmarked the difference. With wxDC the code runs just about 100 times faster.

As far as I know both Cairo and GDI+ are implemented in software at this point, so there's no real reason Cairo should be so much faster than GDI+.

Am I doing something wrong? Or is the GDI+ implementation just not up on par with Cairo?

One small note: I'm rendering to a wxBitmap now, with the wxGraphicsContext created from a wxMemoryDC. This is to avoid flicker on XP, since double buffering doesn't work there.

A: 

Excerpt from the cairo homepage:

Cairo is designed to produce consistent output on all output media while taking advantage of display hardware acceleration when available (eg. through the X Render Extension).

ntd