Gra w javie a fpsy

0

Jest jakiś sposób by używać karty graficznej do rysowania? Myślę, że fpsy są niskie bo java używa do rysowania CPU zamiast GPU. uzywam Graphics2D i metody drawImage oraz BufferStrategy do bufforowania.

0

lwjgl.org lub jogamp.org - zależnie co ma mniej bugów, które ci przeszkadzają (a bugi są w każdym programie). Ja używałem tego drugiego, generalnie twórcy codziennie prawie zaglądają na forum i reagują na zgłoszenia o błędach. Jak chcesz mieć cały framework do tworzenia grafiki na GPU to polecam: jmonkeyengine.com
Uwaga: musisz znać OpenGL w przynajmniej podstawowym stopniu, zanim zabierzesz się do majstrowania jakiegoś swojego silnika graficznego. Najlepsza jest znajomość programowalnego potoku, a nie stałego.
Stały potok w OpenGL to np wbudowane funkcje na macierzach, podawanie wierzchołków po jednym (glBegin/ glEnd), sztywne cieniowanie itd
Programowalny potok to używanie buforów na GPU (np FBO, VBO, PBuffers, itd) oraz shaderów do jak największej ilości zadań (Vertex/ Fragment/ Geometry/ Tesselation shadery).

0

Właściwie to gra nie jest zbyt skomplikowana i myślę, że bez wspomagania powinna lepiej działać ale mam pytanie. Czy te apletowe gry są pisane na jakichś specjalnych engineach/bilbiotekach czy na zwykłych tak jak ja to robie? Może coś jest nie tak w moim kodzie.

0

LWJGL czy JogAmp spokojnie pracuje pod apletem. Apletowe gry oczywiście nie muszą korzystać z OpenGLa bezpośredno (poprzez te wymienione bindingi), ale wtedy ich złożoność jest bardzo ograniczona.

Na stronie www.java4k.com masz sporo przykładowych gierek w Javie, które opierają się na Graphics2D, są proste w budowie i chodzą dość płynnie. Możesz część przestudiować i powyciągać jakieś wnioski z tego.

0

Java2D (czyli np. ten Graphics2D) pod spodem zaprzęga do pracy DirectXa lub OpenGLa, więc jeśli Ci to chodzi za wolno, to coś źle robisz...

0

W moim programie do rysowania obszaru roboczego używam Graphics2D i jakoś działa płynniutko, a nie jest to zwykłe rysowanie prostych obiektów, tylko kształty z Area, JLabele (alternatywnie do TextLayout), krzywe beziera no i gradienty. Oczywiście Antialiasing włączony. Ostatnio dodałem animacje i działają płynnie, a nie używam żadnego "sprytnego rysowania" (przerysowywanie tylko tych obiektów, fragmentów, przy których coś się zmieniło).

Pomyśl o optymalizacjach takich jak prerenderowanie do BufferedImages.

No i sprawdź oczywiście, czy nie popełniłeś gdzieś tak głupiego błędu jak wczytywanie grafiki z pliku w metodzie rysującej, bo to zabija płynność. Wszelkie obliczenia kolorów i pozycji też obliczaj tak rzadko jak to tylko możliwe.

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