Autor Wątek: [Allegro] Mało FPS przy podwójnym buforowaniu  (Przeczytany 3763 razy)

Offline dynax

  • Użytkownik

# Maj 31, 2008, 15:51:37
Witam, programuję ostatnio w Allegro i napotkałem mały problem. Otóż mam program wyświetlający na ekranie jeden sprajt którym można poruszać za pomocą kursorów. Niestety mimo tego, że używam podwójnego buforowania ekran miga (oczywiście nie tak strasznie jak z pojedynczym buforowaniem)  a gra nie działa płynnie. W programie mam ustawiony timer (BPS_TO_TIMER(100)) więc może to jego wina? Program kompiluję w Visual C++ 2008 Express Edition w konfiguracji Release. Kodów źródłowych nie podałem bo będziecie mnie wyzywać od "Co w tym kodzie jest źle?"  ;)

Z góry dzięki.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Redaktor
    • xion.log

# Maj 31, 2008, 15:56:14
Trik podwójnego buforowania polega także na synchronizacji zmiany tychże buforów z częstotliwością odświeżania ekranu (VSync), dzięki czemu animacja jest płynne. Ogranicza to jednak liczbę FPS do owej częstotliwości, co jest zjawiskiem normalnym. Na czas testowania gry zwykle nie korzysta się się z VSync.

A co do timera... Zazwyczaj nie są potrzebne, wystarczy odpowiednie przetwarzanie w głównej pętli gry.

Offline dynax

  • Użytkownik

# Maj 31, 2008, 16:01:36
Dzięki. Tylko teraz muszę pokombinować z tym VSync'em w Allegro  :-\

EDIT: Dałem request_refresh_rate(60); na początku pętli głównej i problem nie występuje (a przynajmniej mniej się zacina) :)
« Ostatnia zmiana: Maj 31, 2008, 16:46:54 wysłana przez Dynax »

Offline Kosai_

  • Użytkownik
    • devlog

# Maj 31, 2008, 18:07:37
w dokumentacji allegro jest jakaś funkcja vsync(); bodajże

Offline dynax

  • Użytkownik

# Maj 31, 2008, 19:26:37
ehhh... a nie można jeszcze trochę zwiększyć wydajności? Narazie to się nadaje tylko do turówek. Z vsyncem udało mi się osiągnąć tylko tyle - http://odsiebie.com/pokaz/170867---ccdd.html (taka testowa mini-gierka :) )
« Ostatnia zmiana: Czerwiec 01, 2008, 16:49:00 wysłana przez Dynax »

Offline Kaszuba

  • Użytkownik
    • Blog

# Czerwiec 01, 2008, 21:24:09
Poziom trudności w tej grze jest dosyć wysoki :P

Offline Kosai_

  • Użytkownik
    • devlog

# Czerwiec 01, 2008, 21:25:39
a co tu się tnie niby?

Offline Ciunkos

  • Użytkownik
    • Black Sheep

# Czerwiec 01, 2008, 21:31:46
U mnie chodzi jak zapewne powinno ;)

bs.mechanik

  • Gość
# Czerwiec 01, 2008, 21:37:56
Kulki spadają normalnie, dość szybko.
Gdybyś zamontował licznik fps'ów i uzależnił prędkość spadania od czasu mógłbyś uzyskać więcej informacji, bo teraz to po prostu działa ;)

Wyłącz vsync, bo nie będzie to odzwierciedlać szybkości działania gry podczas testowania.
Ilość fps'ów będzie ograniczona do HZ monitora/matrycy.   
« Ostatnia zmiana: Czerwiec 01, 2008, 21:40:51 wysłana przez bs.mechanik »

Offline Syriusz

  • Użytkownik

# Czerwiec 01, 2008, 22:34:24
Hm, u mnie w ogóle się nie uruchamia :-\
Wywala mi komunikat:
"Nie można uruchomić aplikacji, ponieważ jej konfiguracja jest niewałaśćiwa, Problem ten może rozwiązać ponowne zainstalowanie aplikacji"
nie wiem dlaczego tak jest

Offline dynax

  • Użytkownik

# Czerwiec 02, 2008, 13:07:45
hmm... Ja mam nvidia GeForce 7300 GS i trochę mi przycina. Dziwne, bo crysis na niskich detalach mi chodzi :) A co do gry to ona jest tak do testów a nie do grania  :P

Hm, u mnie w ogóle się nie uruchamia :-\
Wywala mi komunikat:
"Nie można uruchomić aplikacji, ponieważ jej konfiguracja jest niewałaśćiwa, Problem ten może rozwiązać ponowne zainstalowanie aplikacji"
nie wiem dlaczego tak jest

Dziwne, dołączyłem bibliotekę alleg42.dll więc powinno śmigać, nie wiem dlaczego nie działa.

Offline dynax

  • Użytkownik

# Czerwiec 02, 2008, 15:05:57
http://odsiebie.com/pokaz/172743---4fb9.html - Wersja bez vsyc'a. Kulki zaczęły lecieć strasznie szybko :)

bs.mechanik

  • Gość
# Czerwiec 02, 2008, 15:35:57
Hm, u mnie w ogóle się nie uruchamia :-\
Wywala mi komunikat:
"Nie można uruchomić aplikacji, ponieważ jej konfiguracja jest niewałaśćiwa, Problem ten może rozwiązać ponowne zainstalowanie aplikacji"
nie wiem dlaczego tak jest

Dynax prawdopodobnie nie linkujesz statycznie tego programiku, a Syriusz nie ma Visuala ;)

//edit:
dziwne, bo ja pomiędzy wersjami z i bez vsync nie widzę różnicy :P
« Ostatnia zmiana: Czerwiec 02, 2008, 15:44:34 wysłana przez bs.mechanik »

Offline Syriusz

  • Użytkownik

# Czerwiec 02, 2008, 18:01:25
No, nie mam :D

Cytuj
dziwne, bo ja pomiędzy wersjami z i bez vsync nie widzę różnicy Tongue
Ja też nie :)

Offline dynax

  • Użytkownik

# Czerwiec 02, 2008, 19:02:20
dziwne, bo ja pomiędzy wersjami z i bez vsync nie widzę różnicy :P

A ja widzę, teraz chodzi całkowicie płynnie :)

Dynax prawdopodobnie nie linkujesz statycznie tego programiku, a Syriusz nie ma Visuala ;)

Nie wiem jak się linkuje statycznie :)