MorphOS.pl – Polska strona użytkowników MorphOS-a
MorphOS.pl – Polska strona użytkowników MorphOS-a

Strona główna Forums Klub dyskusyjny Ale jaja, forum działa! Ale jaja, forum działa!

#433
Avatarrzookol
Participant
Oczywiście mogłem użyć SDL_WaitEvent() zamiast SDL_PoolEvent() ale wtedy pętla stała do momentu gdy ruszyłem myszą/klawiaturą, a rysować przecież trzeba, nie? 🙂

I tu właśnie wyłażą wady multiplatformowych bibliotek. W systemie amigowym zrobiłbyś tak, że timer.device odpowiadałoby Ci na request w regularnych odstępach czasu, a sygnał portu powrotnego tej odpowiedzi dodałbyś do maski Wait() w głównej pętli. Wtedy, po przeliczeniu i narysowaniu ramki spokojnie wszedłbyś w Wait() oddając systemowi procesor bez obawy, że musisz czekać na ruch użytkownika myszą. Nawet jeżeli użytkownik nic nie zrobi, Wait() wróci po sygnale z timera i spokojnie narysujesz następną klatkę… A jak łatwo użytkownikowi dać do ręki regulację FPS-ów (np. na potrzeby urządzenia pracującego z baterii) – wystarczy zmienić interwał czasu dla timer.device. To chyba wiem o czym będzie pierwszy artykuł programistyczny na MorphOS.pl…

To prawda, stosowanie multiplatformowych rozwiązań jest na pewno dużo bardziej toporne i mniej eleganckie. Zwłaszcza dla kogoś kto siedzi głęboko w jakimś systemie.

A jeżeli chodzi o regulację max FPS to też jest to u mnie kwestia zmiany jednej zmiennej. Na iPhone/iPod/iPad robię tak, że jak wylezie na wierzch jakiś systemowy requester (SMS/MMS, info o baterii, przypominajka, powiadomienie z PushNotification, itp.) to zmniejszam maxFPS do 10FPS. Po powrocie do gry znów wracam do normalnej wartości. Problem ciągle był tylko w tym, że nadmiarowy czas nie był oddawany procesorowi tylko para szła w gwizdek, maszyna robiła dosłownie nic oprócz "aktywnego czekania". 🙂 No ale jest ok i to dzięki temu, że mnie (może nieświadomie) zmusiłeś.

nie do końca pamiętam SDL ale poprawnie by było zapuścic timera który by generował co określony czas własny event na który by się czekało w WaitEvent, sdl ma takie możliwości

ps. może jak już przerabisz fortisa to fajnie by było dodać obsługe joystików