Wednesday, July 15, 2015

FMod - Minor Drawing Speed Improvements

I noticed that Abiathar performs abysmally when resizing levels with the row/column management tools. The speed of those tools is heavily dependent on the performance of the initial rendering pass; everything is fast when you only have to redraw one tile. To speed that up, I tried two approaches that I thought were clever: parallelizing the SetRenderProps calls in InitializeLevelDrawingSurfaces, and parallelizing the Render calls on uninitialized view planes in RenderViewer. The first attempt was useless because not much actually happens in SetRenderProps. The second failed because GDI+ apparently can't handle multithreading.

So I had to speed up the actual drawing rather than just shoving it off to different cores. I attacked that problem by tuning image formats and drawing modes to minimize the work GDI+ had to do in the Render implementation. Rendering levels seems to be faster, but row/column management is still slow.

No comments:

Post a Comment