06
pro 07

GPS navigace svépomocí - 2. část - způsob zobrazování mapy na GP2X

IT

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:

  1. Vyjmutí skupiny dlaždic na opačné straně, než na kterou chceme posouvat
  2. Smazání obrazových dat z dlaždic
  3. Načtení odpovídajících nových obrázků
  4. Promítnutí obrázků do skupiny dlaždic
  5. 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.

  1. Načtení 6 sousedních dlaždic do paměti
  2. 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ářů

» Odpovědět 07.12.2007 21:46 | peca | ac by me to lakalo...
Tak bohuzel nepomohu. Jednak nemam cas, ale hlavne neumim C++. Delam podobny posun map v Deplhi v nasem firemnim SW. Princip jsem zvoli takovy, ze nactu 4 (pripadne vice, podle nastaveni) dlazdice nejblize stredu obrazovky a ty vykreslim do jejich spravne polohy. Takze asi podobne jako v druhem pripade.

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.
» Odpovědět 07.12.2007 21:53 | peca | emulator, virtualni stroj GP2x
Asi neni nikde k dispozici emulator nebo virtualni stroj GP2x? Ja alespon zadny nenasel. Na Palmy emulator byl a dalo se na tom ledasco otestovat, tak se ptam. Realne si GP2x jen tak neporidim, nehlede na to, ze mi chybi cas si s tim hrat (o to i na hrani her).
» Odpovědět 08.12.2007 11:53 | Vladimír Vondruš | web | Virtuální stroj GP2X
Emulovat GP2X na PC zatím nikdo asi nepotřeboval, takže nic takového se asi sehnat nedá. GP2X má vestavěný linux, takže by bylo lehčí emulovat na linuxových strojích, než na Windows, ale problém je v absolutně odlišném HW.

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 ).
» Odpovědět 08.12.2007 19:18 | peca | upravené Dev-C++
Ja se v tomhle az tak nevyznam. Znamena to, ze takto zkompilovany program pak spustim normalne na Windows a ono to pobezi? Mel jsem za to, ze SDK pro Wokna obsahuje jen crosscompiler, ktery produkuje gpe kod.
» Odpovědět 08.12.2007 19:21 | peca | upravené Dev-C++ dodatek
Jestli jo, tak bych rad popoprosil o ty potrebne upravy na peca (zavin) email (tec) cz.
» Odpovědět 09.12.2007 14:39 | Eso Rimmer | gp32x.com
Co se zkusit poradit na fóru gp32x http://www.gp32x.com/board/index.php?act=idx ? V sekci "Development" mají dvě témata - "Developers' Corner" a "I need help (dev stuff only)". Třeba by tam někdo pomohl.
» Odpovědět 23.05.2016 14:34 | jarda | Navigace
Zajimave. A neni jednodussi investovat do koupe? Ale zase na druhou stranu chapu, ze Vas tato cinnost asi bavi. Ja pouzivam uz dlouhou dobu TomTom a nemuzu si stezovat. Seznamil jsem se s ni pri pronajmu uzitkoveho vozu od www.dodavky-express.cz
Na stránce došlo k chybě (0): Unknown error