Maciej Korsan

Linux i grafika 2d w Javie

21 kwietnia 2009, 16:56:03 | Kategorie: Ogólne |

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.


Zal @ 21 kwietnia 2009 17:04:56

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.


Maciek @ 21 kwietnia 2009 17:07:01

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 :)


Maciek @ 21 kwietnia 2009 17:34:58

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 ;]


Zal @ 21 kwietnia 2009 17:39:52

Ile kiwnięć różdżką potrzebujesz, żeby działało?


Michał Górny @ 21 kwietnia 2009 22:01:07

zależy jaka różdżka


Maciek @ 21 kwietnia 2009 22:02:42

jogger...


Ewelina @ 21 kwietnia 2009 22:57:27

Dodaj komentarz: