Ano, jak pisu, tak je pomalost V1 z casti zpusobena new Color() a manipulacemi s RGBA, co se predava. Kdyz to new Color() vyhodite z programu a pouzijete tu cast kodu pastovanou do clanku, bude V1 rychlejsi nez puvodni verze, ale vysledkem bude jiny obrazek nez v dalsich pripadech (a stejne se ve vysledku bude jednat o velmi pomalou variantu, uz jen kvuli prepoctu z grayscale na RGBA a zpet.
Ja som sa raz s tymto hral a grafika ok, ale s cim som mal velky problem boli zasklby. Proste sa mi animacia stale nezdala plynula (oproti napr. tomu istemu vo flashi). Neskumal som ci to bolo sposobene GC, ale dost som mal problem s vyberom vhodneho volania na casovanie (pomaly kazdy "sleep" v jave pouziva nieco ine).
To by nemelo nastavat, pokud se vyuzivaji "kompatibilni" bitmapy, popr. volatilni bitmapy a double buffering. Nebo se provadelo nejake slozitejsi vykreslovani pres Graphics2? Tam jsou akcelerovane jen nektere operace a navic zalezi na konkretnim systemu (treba na W. je to reseno pres DirectX, viz zdrojaky OpenJDK - jeste se o tom zminim).
GC muze delat problemy, na druhou stranu v klasicke hre ci demu vlastne zadne objekty ani nevznikaji :) takze zde by GC v podstate nemel mit nic na praci. Jestli mate nejake demicko, muzu se na to ze zajmu podivat a treba i zkontrolovat, jake problemy dela GC a jake grafika.
V Javě jsem si naprogramoval vlastní herní 2D engine i s grafikou bez použití jakýkoliv externích knihoven jako jsou JOGL či SDL a všechno šlape jak má.
Když se dá pozor na pořádný přepočet doby na jakou se má uspat "vykreslovací" vlákno tak je animace plynulá jako video.
Když si dáte limit třeba na max.60 FPS tak vám skutečná FPS nikdy neklesne pod 55FPS.
Lidské oko umí stejně rozpoznat něco kolem 25 FPS a dnešní monitory jsou většinou nastavené na +-60Hz.
Takže ve dle mého názoru vykreslovat něco více než 60FPS je jenom mrhání výkonem, který může být využit jinde.
Jenom tak z jiného soudku.
Na youtube jsou vtipné videa srovnání mezi 80FPS a 120FPS nebo dokonce 300FPS, ale nejspíš málokomu došlo, že snímkovací frekvence videí na youtube je +-20FPS, tudíž máme mizivou šanci poznat rozdíl.
Toto mi vždy udělá úsměv na tváři. :D
Možná rozumíš Javě, ale FPS nikoliv :-)
Klasika v kině je 24 snímků, v televizi 25/30 snímků, dneska v televizi 50/60 snímků. V PC je minimum 60 snímků a lidský zrak končí kolem 90 snímků, nadaní jedinci vidí přes 100 snímků.
Rozdíl mezi kinem/televizí a LCD je ten, že kamera exponuje jeden snímek desítky milisekund, tudíž produkuje rozmazané snímky, opakuji rozmazané a lidský mozek si z nich pak složí plynulý pohyb.
V PC se produkují statické snímky a na dojem plynulého pohybu se jich musí vytvořit mnohem víc, až 100 za sekundu.
Proto echt pařani opečovávají staré CRT monitory schopné 100+ Hz a teprve dneska pomalu přecházejí LCD 120 Hz.
Ono je to ještě složitější. Těch 24 snímků v klasickém kině (před digitální éra) je vlastně zavádející údaj, každé pole se promítá dvakrát se zatemňovacím intervalem, aby se těch 24 snímků zdálo pěkně plynulých. Taky se asi bude rozdíl v té dynamice jak se rozsvítí lampa vs. rychlost překreslování monitoru. Tipnu si, že proto je potřeba větší počet snímků na digitálním zařízení, aby se oko -> mozek cítil více zmatený .)
"This frame rate (24 fps) still has the potential to produce flicker between frames, so most 35 mm projectors use a double or triple bladed shutter to flash each frame either twice or three times, simulating the effect of either 48 fps (double bladed shutter for showing each frame twice)."