Witam. Od niedawna bawię się trochę eMbedded Visual C++. Dopóki była to zwykła zabawa przy użyciu funkcji GDI, nie było żadnego problemu. Schody pojawiły się dopiero w momencie, gdy chciałem zrobić port gry, którą parę lat temu napisałem na PC. W związaku z tym, że wystepują tam elementy animacji, z góry założyłem, że jedynym rozsądnym rozwiązaniem będzie wykorzystanie GAPI.
Wszystko OK - poza jedną sprawą - płynnością animacji. Nie mogę uzyskać idelanej płynności tak jak w innych grach na PPC, których dema można znaleźć wszędzie w sieci.
Zastosowałem najpierw timer, który w regularnych odstepach czasu (co 50 ms) miał odświeżać ekran. Jednak to okazało to się totalną klęską. Nawet, gdy sprzęt po prostu odtwarzał animacje (i nic poza tym - nawet nie był dodatykany) to i tak raz animacja chodziła szybciej, potem lekko zwalaniała potem znów przyspieszała - po prostu jej prędkość pływała.
W końcu zdecydowałem się na stworzenie osobnego wątku odpowiedzialnego za animacje, który to w petli w kółko (co nie jest porządnym programistycznie rozwiązaniem) co 50ms odświeżał ekran. Co prawada dało to już bardzo dobre rezultaty, gdyż animacja była rzeczywiście płynna, ale tylko do czasu wcisnięcia jakiegoś przycisku, np. w prawo. W tym momencie pojawiało się zachwianie na ok. 1 sekunde (lekkie lub większe drgania) po tym czasie animacja znów się stabilizowała. Jednak jeśli ma to być gra to nie może się przycisnać przy każdym naciśnięciu dowolnego przycisku.
W związku z powyższym moje pytanie brzmi - jak profesjonalnie rozwiązuje się ten problem?
Używam SPV M3000 - wiem, że sprzęt ten ma niezbyt szybki procesor, ale jednak są gry i programy, które chodzą na tym wręcz idelanie, więc istnieje jakiś sposób.
Z góry dziękuję za każdą, choćby trochę naprowadzającą odpowiedź.
Pozdrawiam
Piotr Kowalewski