Možno prekreslenie kurzora po každom posune 1 objektu bude stačiť, pokiaľ si to zoberieš do logiky, že sa posunie 1. objekt a kurzor sa vykreslí po ňom a potom 2. objekt a kurzor sa vykreslí po ňom. Ale len moja teória, ja len ako by som sa s tým hral ja . Samozrejme vieš lepšie prečo robíš veci ako robíš .
To by som uz musel testovat ci dochadza k prekrytiu kurzoru a objektu. Takto jednoducho nakoniec vykreslim kurzor na pozicii X,Y a je to.
Nestaram sa co je za nim.
Už tomu rozumiem, no keby si nič netestoval, možno by to nebolo až tak strašné, zobrazenie objektu, ktorý prekryla myš by sa celkom rýchlo napravilo pri najbližšiom cykle, kedy by na neho přišiel rad, čo je podľa mňa menej rušivé - prešla cez objekt myš, možno to ani nepostrehneš ...a možno postrehneš .
Jack-3D mi dal chrobaka do hlavy a tak som skusal rozne konfiguracie vo WinUAE. Zistil som ze uz pri rychlosti 14 MHz sa obraz "rozpada".
Ide o obsluhu parnych a neparnych frames v Laced. Casovanie frames spolu s prepinanim double buffera je dost o drzku. Tak som to trochu upravil a teraz je obraz stabilny do 36 MHz. Samozrejme testovane vo WinUAE. Zajtra vytiahnem A600 furiu 33MHz a A1200 28MHz a otestujem na real HW.
Možno prekreslenie kurzora po každom posune 1 objektu bude stačiť, pokiaľ si to zoberieš do logiky, že sa posunie 1. objekt a kurzor sa vykreslí po ňom a potom 2. objekt a kurzor sa vykreslí po ňom. Ale len moja teória, ja len ako by som sa s tým hral ja . Samozrejme vieš lepšie prečo robíš veci ako robíš .
Myslis, ze vykreslovat kurzor X krat ( X=pocet objektov) je rychlejsie ako 1 krat na konci ?
Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)
Rýchlejšie nie, ale plynulejšie snáď áno. Tá myš sa seká vďaka dlhému času, kým na ňu príde rada. Pokiaľ by sa netestovala pozícia myši voči objektom kvoli tomu, aby sa nezmazal pohybujúci objekt, keď cez neho prejde myš (teda zobrazenie by sa ihneď obnovilo pri takejto situácii inak platí, že jeho zobrazenie sa napraví až v dobe, kedy na objekt príde rada), tak čas tejto nápravy zobrazenia objektu sa može skrátit tým, že nebudeš zobrazovať kurzor myši po každom objektu, ale napríklad po každom druhom, alebo tretiom objektu (súčasný stav je po každom 8. objektu, alebo koľko ich tam je). Tým sa skráti čas obnovy objektu, keď cez neho prejde myš.
To trhanie je sposobene prenosom pozadia do neaktívnej VideoRAM. A to je 640x512x16 co je asi 164 KB, to zaberie Blitteru "trochu" casu.
Takze akykolvek iny system vykreslovania objektov mys nezrychli ani nezlepsi plynulost.
Mozno by to chcelo spravit kombinaciu oboch systemov. Ked bude cas tak sa este pohram.
To trhanie je sposobene prenosom pozadia do neaktívnej VideoRAM. A to je 640x512x16 co je asi 164 KB, to zaberie Blitteru "trochu" casu.
Takze akykolvek iny system vykreslovania objektov mys nezrychli ani nezlepsi plynulost.
Nejake napady na zrychlenie:
1. Pouzitie CPU - nenechat vsetko len na blitter ale vyuzit aj procesor..
2. Nerobit double buffer a tym padom by sa nemuselo prekreslovat cele pozadie. Pred vykreslenim objektu si ulozit cast pozadia (za objektom) o velkosti objektu a potom namiesto kreslenia celeho pozadia vykreslit len tieto ulozene BOBy (blitter objekty). Tych 8 "bobov" to musi zvladat aj za VB..
Inac prajem vela uspechov a som rad ze su tu este ludia ktory programuju na Amigu...
Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)
To by sa dalo obist rozdelenim pozadia na viac casti..
Nejake napady na zrychlenie:
1. Pouzitie CPU - nenechat vsetko len na blitter ale vyuzit aj procesor..
2. Nerobit double buffer a tym padom by sa nemuselo prekreslovat cele pozadie. Pred vykreslenim objektu si ulozit cast pozadia (za objektom) o velkosti objektu a potom namiesto kreslenia celeho pozadia vykreslit len tieto ulozene BOBy (blitter objekty). Tych 8 "bobov" to musi zvladat aj za VB..
Inac prajem vela uspechov a som rad ze su tu este ludia ktory programuju na Amigu...
Pre OCS by som to riesil presne takto.
Ono praveze to pocas VB nestiha (predosle video), ale mam v hlave este dalsie riesenie. Bude to kombinacia obidvoch a o nieco sa postara aj CPU.
Nevies kolko mikrosekund priblizne trva VB ? Niekde som to davnejsie nasiel, ale teraz to neviem najst a aj by sa mi to hodilo.
Ono praveze to pocas VB nestiha (predosle video), ale mam v hlave este dalsie riesenie. Bude to kombinacia obidvoch a o nieco sa postara aj CPU.
Nevies kolko mikrosekund priblizne trva VB ? Niekde som to davnejsie nasiel, ale teraz to neviem najst a aj by sa mi to hodilo.
Nestiha to ani bez vykreslovania pozadia ? 8 bobov by malo stihat. Cele pozadie by sa vykreslilo len raz na zaciatku programu a potom by sa prekreslovali len zmeny...
VB trva podla frekvencie screenmodu, pre PAL by to bolo (uvediem postup vypoctu):
PAL ma 50 Hz,
1 frame trva 1/50 = 0.02 sekundy * 1 000 000 = 20000 mikrosekund,
pocet riadkov v PAL je 312,
cize 20000/312 = 64.1025 mikrosekund = doba na jeden riadok,
riadkov mimo amiga obraz je 312-256=56,
56*64.1025 = 3589.74 = vysledok
VB pre PAL teda trva 3589.74 mikrosekund
Amiga 1200T (E/Box)+BlizzardPPC 603p/363+060/66+BVision PPC+256MB+KS3.1+Cocolino+Lyra 2+Fast Ata MK-IV+320GB WD Blue 3200AAJB PATA HDD(PFS3)+dvdrw+dvd+cf2ide Amiga 1200+BlizzardPPC 603e/210+040/25+128MB+KS3.1+CF4GB(PFS3)
To co opisujes je system ktory chcem pouzit ako dalsiu moznost. Podobny vypocet som nasiel ale nebol som si isty ci je to takto. Dik.
Mne trva vykreslenie deviatich Bobov priblizne 7500 mikrosekund. Preto ta "anomalia". Hned zajtra sa do toho pustim.
Nakoniec som sa do toho pustil este dnes. S výsledkom som nadmerne spokojny. Pouzil som doublebuffer ale s tim ze neobnovujem cele pozadie, ale len miesta kde boli vykreslene objekty. Zdvojnasobil som aj pocet objektov, celkovo 16+mys. Na rychlosti to nic neubralo a aj mys pracuje ako ma.
Komentovat