by Johan » Jul 6, 2002 @ 7:32pm
Hi Dirk,
Inline assembly is not available for the PocketPC, so it is not implemented. GapiDraw uses template expansion to provide optimized loops, which produces code that is MUCH faster than plain C, and without all the errors you would have writing 40 blitloops of every function in ASM. All expanded loops have however been analyzed by reading through the ASM output on both x86 and PPC platforms to scan for possible compiler misses.
If you want to know how this technique works you may check PocketFrog which was the first library I am aware of to utilize this technique (which is a really clever solution by Thierry).
Performance-wise I would safely say that PocketFrog and GapiDraw are equally as fast. Using them is however very different (PocketFrog uses rasterizers that have to be "configured" with alpha settings etc, GapiDraw uses struct pointers in most functions), and I guess it's mostly a matter of personal taste what you prefer. Both solutions require a bit of extra overhead to every operation, either setting parameters for the rasterizer or creating a struct with parameters.
Compared to other libraries (EasyCE and PocketC), both PocketFrog and GapiDraw are much faster. I cannot comment on Overloaded since I haven´t checked it out (mainly because it´s only for developing Overloaded games), but EasyCE2 is not optimized.
Using GapiDraw for commercial games development is free as long as you notify us. Please have a look at 1.03 due out tomorrow (I´ve been saying tomorrow too many times now I guess), but it will really make a difference in development speed.
/Johan