I have now implemented no back buffer, TBitmap and compatible bitmap options of application. I also imported my shuttle object (drawn as polygon) which is controlled with a arrow keys (GetAsyncKeyState).

I also have two different kind of timer in there now. First one uses QueryPerformanceCounter and second one TimeGetTime from MMSystem unit.

When TimeGetTime timer is used frame rate locks to 1000fps because the resolution of timer (ResultTime := (TimerStartTime - FrameEndTime) / 1000). And because minimum resolution of timer is 1ms, it's only possible to get 1000 time differences (cap between the frames) per second. Am I right??

But with that TimeGetTime -timer I achieve very, very, very smooth 'game play' (shuttles velocity) on my laptop, but when I copy executable to a computer wich has a one cpu core at use, game play gets really choppy. Even if there were enough frames per second!?!

So, at this point, after many emprical test of different computers (I have tested my exe's on couple other computers also, which are not mentioned earlier) I'm not sure what causes that jerky graphics.

It's obvious that different back buffers gives different framerates, but even in worst case (CompatibleBitmap) frames are so high on my desktop computer that game play should be nice and smooth, but no. Shuttle jumps some pixels ahead from time to time like some frames would be missing between the update of the loop, but that's not the issue. I have to sit down for a while and rethink where problem lies.

I'm going to continue my test application tomorrow so until then....


edit: I desided to share the executable of an application. It uses that TimeGetTime timer and has No backbuffer, TBitmap (Blue canvas) and CompatibleBitmap (Green canvas) implemented. On my laptop everything works fine and goes smoothly but in my gran-ol'-amd desktop machine frames drops near to 60 (except with TBitmap) and graphics jitters big time (even with TBitmap).

Application is very, very, very unfinished and DIB mode is not implemented yet, but one can try if want to. There's also no error checking at all, so if something goes wrong it will propably leak memory and crash things. But, if all is initialized properly then cleanup is done also properly.

Here it is -> http://www.saunalahti.fi/hag/share/GDIBlitting.exe

Source coming later when done!


Edit2: Ouh, and I liked to mentiot that, if I use DirectX to draw things. Even with same game engine as this example uses. Everything goes smooth and fine even with my Gran-ol'-amd machine. It's only the GDI which causes the headache, but that's the joy part of programming. Isn't it?