GPS navigace svépomocí - 2. část - způsob zobrazování mapy na GP2X
Po dlouhé pauze po prvním dílu seriálu se vracím rozebrat možné způsoby, jak zobrazovat jednotlivé dlaždice mapy na GP2X.
Základním požadavkem mapové aplikace na GP2X je výkon, tj. co nejméně spotřebované paměti, rychlá odezva a plynulý chod na nízkých frekvencích podtaktovaného porcesoru, ideálně 50-100 MHz.
Během dlouhé doby před napsáním tohoto článku jsem promýšlel nejjednodušší způsob pro zobrazování map, který by byl zároveň lehce naprogramovatelný a odolný proti přetečení paměti (což je na GP2X častá věc). V hlavě mi tedy vykrystalizovaly dva způsoby.
Základ je u obou způsobů stejný – načtení dlaždic, které se budou zobrazovat, do paměti – velikost dlaždic je 256x256 px, rozlišení displeje na GP2X je 320x240 px, to znamená, že na celém displeji je možno najednou zobrazit maximálně 6 dlaždic (3 na šířku krát 2 na výšku) – viz obrázky níže.
Posun po mapě
Posun se provádí postupným posouváním zobrazení skupiny 6 dlaždic (skupina se zobrazí o pixel posunutá než v předchozím zobrazení).

Při dojití na konec skupiny dlaždic se aplikuje tento postup:
- Vyjmutí skupiny dlaždic na opačné straně, než na kterou chceme posouvat
- Smazání obrazových dat z dlaždic
- Načtení odpovídajících nových obrázků
- Promítnutí obrázků do skupiny dlaždic
- A její přesunutí na druhý konec zobrazované skupiny

Způsoby zobrazení na displeji
Způsoby zpracování se liší v promítání dlaždic na displej – první způsob používá mezivrstvu, z které se pak část vykreslí na displej, druhý způsob ořezává dlaždice a jejich části vykresluje rovnou na displej.
První způsob – použití mezivrstvy
Tento způsob potřebuje 3 kroky na vykreslení mapy na displej:
- Načtení 6 sousedících dlaždic do paměti
- Těchto 6 dlaždic se promítne na mezivrstvu tak, jak by vypadaly ve skutečnosti
- Výřez z této mezivrstvy se zobrazí na displeji

Lehké na naprogramování, jednoduché na odladění, avšak tento způsob má nevýhody:
- Větší (někdy až kritická) spotřeba paměti kvůli mezivrstvě
- Větší zatížení procesoru kvůli dvojnásobnému promítání
Výhodou je rychlý posun, pokud se nenačítají nové dlaždice (zobrazení mezivrstvy o kousek vedle na displeji).
Druhý způsob – zobrazování ořezaných dlaždic přímo na displej
Tomto způsobu stačí jen 2 kroky na zobrazení na displej.

- Načtení 6 sousedních dlaždic do paměti
- Zobrazení části každé dlaždice na část displeje
Výhodou je vysoký výkon, ale tento způsob je velmi náročný na naprogramování a odladění – výpočty velikosti ořezu a pozice na displeji, nezobrazování některých dlaždic...
Související články
Pod štítkem .
» Přidat komentářDiskuze: 7 komentářů
Jediným řešením je sehnat si zdrojáky od programu, který chcete emulovat (viz archive.gp2x.de ) a zkompilovat si je pomocí nějakého SDK pro Windows (já používám upravené Dev-C++ z http://dev.gp2x.com/forum/viewtopic.php?p=479 ).


Pouzivam transformaci souradnic pomoci API funkci OS Windows. Nastavim oknu souradny system a potom uz vykresluju mapy v jejich originalnim souradnym systemu (coz je v mem pripade S-JTSK (Krovak)). Pamet me netrapi, preci jenom pri praci s mapama na PC se predpoklada, ze si tam uzivatel da aspon 1 GB.