Autor Wątek: opengl w windows  (Przeczytany 1672 razy)

Offline MaciekR

  • Użytkownik

# Marzec 20, 2006, 12:25:55
W każdym tutoriale jakie znalazłem program pisany z wykorzystaniem winapi zużywa 100% procesora. Czytałem troche o tym i wiem że chodzi tu (chyba) o pętle odbierania komunikatów. Ale czy tak powinno być, że wżera mi 100% procesora?Jak Wy sobie z tym radzicie?Czy wszystkie gry pisane pod windows wykorzystują 100%?

« Ostatnia zmiana: Marzec 20, 2006, 12:42:45 wysłana przez MaciekR »

Offline Mr. Spam

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

Offline Nargil

  • Użytkownik
    • projekty

# Marzec 20, 2006, 12:33:38
normalne... Bo przeciez chcesz osiagac 100% fps jakie komputer moze osiagnac, wiec szczegolnie przy pustej scenie na maxa wykorzystywany jest cpu.

st3tc

  • Gość
# Marzec 20, 2006, 12:48:25
W każdym tutoriale jakie znalazłem program pisany z wykorzystaniem winapi zużywa 100% procesora. Czytałem troche o tym i wiem że chodzi tu (chyba) o pętle odbierania komunikatów. Ale czy tak powinno być, że wżera mi 100% procesora?Jak Wy sobie z tym radzicie?Czy wszystkie gry pisane pod windows wykorzystują 100%?

To nie jest wykorzystanie mocy obliczeniowej procesora, tylko procentowa wielkosc czasu jaka system operacyjny przydzielil procesowi. System jest wiolozadaniowy i rozdziela czas na rozne procesy. Jezeli jest ok. 100% to oznacza to tylko tyle, ze aktualnie nic innego nie potrzebuje procka. Nie nalezy sie sugerowac tymi procentami - bo moze byc gra ktora mocno obciaza GPU, a CPU nic nie robi (oprocz wait-a w driverku). Tak naprawde procek dziala caly czas - odpal sobie task managerka - jak nie ma obciazenia to 90 i wiecjej % pobiera procesik "iddle" (czyli procek nadal pracuje (normalka) ale tym razem "wait-uje" w systemowym procesiku.

Jak masz GetMessage zamiast PeekMessage to jedyna roznica jest taka, ze program jest uspiony przez 99% swojego czasu, a aktywowany (komunikatami) tylko na czas obsluzenia komunikatu.
« Ostatnia zmiana: Marzec 20, 2006, 12:50:56 wysłana przez st3tc »

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Marzec 21, 2006, 00:22:54
Jest jeszcze taka opcja żeby włączyć pionową synchronizację (czyli np. w DirectX tryb prezentowania zamiast IMMEDIATE to ONE) i wtedy liczba FPS nie przekracza odświeżania ekranu w Hz, gra nie renderuje klatek których gracz i tak nie zobaczy, a cały czas procesora nie jest wtedy pożerany w całości przez grę.

Ale generalnie takie wykorzystywanie procesora w 100% to nie jest nic złego. Wszystkie gry tak robią. Warto natomiast, żeby po zminimalizowaniu tego nie robiły, tylko albo wstrzymywały całą swoją akcję czekając na komunikaty (GetMessage zamiast PeekMessage), o ile mogą sobie na to pozwolić, albo robiły jakieś Sleepy.