Linux i grafika 2d w Javie
Piszę w javie pacmana i mam problem. Wydajność pod linuksem jest ~10 razy mniejsza niż pod windowsem. Nie wiem co jest tego przyczyną, straciłem dzień na dochodzenie o co chodzi, a termin jest na piątek... Wygląda to tak, że jeśli kursor jest nieruchomy, gra klatkuje, natomiast gdy ruszam szybko nad oknem animacja jest płynna. Jeśli ktoś miał podobny problem i zna jakieś rozwiązania byłbym wdzięczny. Tymczasem zostaje mi przesyłanie pliku .jar na komputer siostry.
A jak wymuszasz generowanie żądanej liczby FPS-ów?
Na Jave znam się słabo, ale to wygląda tak, jakby ruch myszy wymuszał częstsze odświeżanie zawartości okna, co przekłada się jednocześnie na szybsze wyświetlanie grafiki.
to jakiś większy problem, na forach jest sporo postów na ten temat, ale nie mogę znaleźć rozwiązania. na windowsach wszystko jest ok. fps-y kontroluje za pomocą usypiania wątka.
Usypiania wątka? Jakimś yield()? Jesli tak, to linuksowy scheduler może przerzucać go na saaaaam koniec kolejki procesów. Dalej niż można się spodziewać :)
Podejrzewam, że wersja OpenJDK też ma znaczenie.
zdz @ 21 kwietnia 2009 17:33:32
wersji openjdk probowałem kilka, aktualnie dodałem
Toolkit.getDefaultToolkit().sync();
po wyświetleniu zawartości po buforowaniu i wydajność wzrosła znacznie :)
Ja podejrzewałem, że chodzi o częstotliwość wywoływania metody repaint z JComponent:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JComponent.html#repaint(long,%20int,%20int,%20int,%20int)
Jak najeżdżasz kursorem to na okienko to jest ona częściej wywoływana.
Ale jak wspomniałem - słabo się na tym znam, więc nie powinienem się wypowiadać.
Co do wątków - coś mi w głowie świta, że to też może stanowić potencjalny problem (tj. precyzyjne określenie długości takiego snu). Ale jak już wspomniałem - doradzać nie powinienem, bo słabo się na tym znam ;]
Ile kiwnięć różdżką potrzebujesz, żeby działało?
Michał Górny @ 21 kwietnia 2009 22:01:07
jogger...
Ewelina @ 21 kwietnia 2009 22:57:27


