Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wydajnością programu w c++ i sfml

Ostatnio zmodyfikowano 2017-09-14 21:26
Autor Wiadomość
Wuwus1
Temat założony przez niniejszego użytkownika
Problem z wydajnością programu w c++ i sfml
» 2017-09-13 17:11:04
Ostatnio zacząłem pisać prostą grę i chciałem przetestować jak sobie radzi na różnych komputerach. Przeniosłem aplikację na komputer siostry i klatki posypały się na łeb na szyje, a procesor skoczył z 2% do 35%. Dziś postanowiłem przynieść go do szkoły i tam odpalić. Komputer zachował się tak samo jak mojej siostry tylko, że procesor skoczył z 10% do 100%. Jedyna rzecz, która wpadła mi w oko to ten błąd https://imgur.com/H1PEx24. U mnie wszystko działa, gra utrzymuje stałe 60 klatek, a w procesach zabiera 1% mocy procesora. Myślę, że błąd może być związany z brakiem karty graficznej lub starych sterowników, ale z drugiej strony to trochę dziwne, że gra zjada tak dużo mocy procesora, a wykonuje mniej operacji niż pierwszy mario na nes'a. Inni mają ten sam problem, tylko że oni nie używają ograniczenia klatek, więc komputer generuje tyle klatek ile może i tu zrozumiem to obciążenie, ale ja ograniczam klatki do 60. Zamieszczam link do kodu źródłowego z VisualStudio i CodeBlocks oraz program w wersji release. Przepraszam za słabo poukładany kod ale jeszcze się uczę c++. Ps avast czepiał się trochę mojej gry nie wiem dla czego. (Nie jestem pewien ale chyba trzeba będzie samemu załączyć bibliotekę sfml 2.4.2). http://www.filedropper.com​/gra_1
P-164846
Kinexity
» 2017-09-13 20:56:20
Najlepiej sprawdź poziom użycia karty graficznej (Open Hardware Monitor - przykładowy program do tego celu). Jeżeli przyczyna jest inna, to przytoczę podręcznikowe pytanie: może gra jest za słabo zoptymalizowana?

EDIT: Pozwoliłem sobie sprawdzić u siebie - mam kartę NVIDIA GeForce 920M i u mnie pożera ok. 29 - 31 % rdzenia, co jak na grę, w której w zasadzie za wiele się nie da zrobić, jest dość chorą ilością.
P-164853
Wuwus1
Temat założony przez niniejszego użytkownika
» 2017-09-14 07:23:37
Sprawdziłem zużycie karty graficznej programem Open Hardware Monitor i zużycie wzrosło o 1%, a procesor nie podskoczył. Jeżeli chodzi o optymalizację to niewiele mogę zrobić, komputer ma bardzo mało rzeczy do obliczania. Główna część pętli składa się z komend, które wywołują animację gracza (4 sprajty razem 454 Bajty), sprawdza czy gracz nie wcisnął strzałek, jeżeli wcisnął to ma się przesunąć, sprawdza kolizje z oknem gry, aby nie wylecieć za pole widzenia i sprawdza czy gracz nie wcisnął klawisza odpowiedzialnego za atak. Reszta to czyszczenie okna i wyświetlanie gracza.
P-164868
Wuwus1
Temat założony przez niniejszego użytkownika
» 2017-09-14 07:41:00
Przeniosłem grę na komputer siostry i powyłączałem niektóre funkcje aby sprawdzić, które zjadają najwięcej cpu. Gdy wyłączyłem funkcje tj. poruszanie gracza, animowanie gracza, sprawdzanie ataku itd. to nic nie odjąłem z procesora dalej 36%, ale jak wyłączyłem funkcje do rysowania na ekranie to procesor się uspokoił. Dotychczas aby narysować coś na ekranie tworzyłem w każdym obiekcie(który chce narysować) funkcję Rysuj do, której przekazywałem referencje do okna sfml, a następnie wywoływałem nim funkcję draw(). Ale czemu na moim komputerze nic się nie dzieje, a na wszystkich innych(które testowałem) cpu szaleje i spowalnia grę?

Przykład funkcji rysuj:
C/C++
void LEVEL::RenderLevelBackground( sf::RenderWindow & W )
{
    W.draw( BackGroundSpr );
}
P-164869
Wuwus1
Temat założony przez niniejszego użytkownika
» 2017-09-14 21:26:42
Po długim szukaniu i pisaniu na forach sfml (tak naprawdę to dostałem odpowiedź po 5 min) dowiedziałem się, że powodem tego, że gra się ścina są niezaktualizowane sterowniki karty graficznej.
P-164884
« 1 »
  Strona 1 z 1