Jak sprawdzić ilość klatek na sekundę? Przyśpieszanie gry w OpenGL.

0

Witam,
pytania jak w temacie: jak sprawdzić ile klatek na sekundę ma moje aplikacja? (FPS)
Drugie pytanie: (OpenGL) chodzi mi o to jakie są takie najlepsze sposoby przyspieszenia wyświetlania. Zablokowanie wyświetlania tego, co jest poza zasięgiem wzroku gracza, nie wyświetlanie rzeczy ktore są dalej niż powiedzmy 20.0f.
Z gory dziękuję.

1

Musisz obliczyć różnicę czasu jaka minęła od ostatniego Update'a czyli pętli głównej gry. Wyjdzie ci np. 18ms i 1000 (tyle ma 1s) dzielisz na to 18 i wychodzi ci ilość klatek na s. Nie wiem w OpenGL czy są jakiejś mechanizmy zliczające czas poszukaj w necie. A co do ograniczania pola wyświetlania, możesz tak zrobić powyżej 20 jednostek, ale zależy jak wielki masz plan gry. 20 może być trochę za dużo i nie będziesz prawie nic widział. Dostosuj tą ilość do planu gry. Możesz zrobić mgłę, żeby to ładnie wyglądało, co prawda ona też ciągnie moc, ale czasem bardziej się to opłaca.

Na moje oko powinno zadziałać tak:

#include <windows.h> // załączasz nagłówek do funkcji GetTickCount()

// na początku programu:
int startTime = GetTickCount(); // czas startu programu
int totalTime; // całkowity czas od startu
int elapsedTime; // czas od ostatniego Update'a

// w pętli głównej:
elapsedTime = GetTickCount() - startTime - totalTime; // odejmujemy od teraźniejszego wcześniejszy całkowity
totalTime = GetTickCount() - startTime; // uaktualniamy całkowity

I teraz możesz obliczyć FPS tak:

int fps = 1000 / elapsedTime;

Wcześniej zrobiłem to błędnie, teraz jest dobrze.

0

Powinieneś zainteresować się następującymi technikami: frustum culling, occlusion culling i level of detail. Są to jednak dość zaawansowane mechanizmy. Pytanie podstawowe: masz problem z wydajnością, czy raczej chcesz się pobawić różnymi metodami?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0