views:

898

answers:

2

I have a Windows CE application that uses a lot of vector graphics and in places is quite slow. I'm currently using GDI for rendering via a bitmap for flicker free refreshes. Typically, I'm windowing in on part of a large 3d map. On some devices (e.g. 166mhz SH4), this gets slow with 3-5 second refresh times for big datasets. My question is this;

  • Has anyone done any comparisons on the relative speed of graphic operations on Windows mobile versus Win32. Put another way, are profiling results from a Win32 version of the software applicable to a WinCE version, assuming we are only looking a GDI calls.

  • Has anyone tried profiling onboard on a WinCE platform (C++ app), if yes, using what tools.

  • Is anyone aware of any methods to improve drawing speed on Windows CE. I'm currently looking at FastGraph following feedback from a previous question, but this is a slightly longer term solution. Bad and all as it is, I'm looking for something faster to implement for an upcoming release.

+1  A: 

I've done a lot of this kind of benchmarking, and GDI operations are slower on WinCE than regular Win32, but only slower in proportion to the slower processors on WinCE devices. In other words, there doesn't seem to be any additional performance hit from using GDI in WinCE.

Sorry, I don't have answers to your last two questions.

MusiGenesis
Thanks and very useful. Once I know that from a proportional standpoint Win32 and WinCE are at least similar, I can profile effectively from the desktop. My concern was the graphics cards on the PC might skew the results to the extent I would optimize incorrectly.
Shane MacLaughlin
+2  A: 

I don't have a lot of knowledge of the graphics side of things but from experience, if you want to be fast at some specific hardware related things, the closer to "metal" the faster you can get (and the harder it gets!). So you could look into using Direct Draw or Direct 3D (altho I think they are dropping D3D and going over to OpenGL ES for WM7). You may like to look into way Game Developers use.

On the question of Profiles, I haven't found any but I do build my own.

Shane Powell
On modern devices, you can use OpenVG instead of OpenGL, which supplies hardware-accelerated vector-graphics and a relatively fast software fallback, though I think the latter is not available by default (i.e. in worst case, you have to buy one).
OregonGhost