.[ ČeskéHry.cz ].
Vykreslovanie grafiky, v pixeloch a v "nepixeloch"
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
BX



Založen: 19. 12. 2010
Příspěvky: 5

PříspěvekZaslal: 16. únor 2011, 09:49:55    Předmět: Vykreslovanie grafiky, v pixeloch a v "nepixeloch" Odpovědět s citátem

Zdravím vás Smile
Mám takú skôr teoretickú otázku. Totiž, keď pracujem napríklad v Allegro, tak používam na vykreslovanie suradnice v pixeloch. To znamená, že som obmedzený na akúsi "mriežku" do ktorej kreslím. Pohyb po diagonále by som potom spravil (x+1,y+1). To by ale bol pohyb v uhle 45 stupňov. Ak by som chcel menší/väčší uhol, musel by som to riešiť (x+1,y+2) to už ale vyzerá kostrbato a neplynule.
Naproti tomu v iných, modernejších knižniciach (ako príklad uvediem cocos2D) využívam akési imaginárne "nepixely", kde sú x a y súradnice už typu float. Môžem teda urobiť (x+0.1,y+0.2) a pohyb teda v týchto destiných číslach vyzerá prirodzenejšie.

No a teda moja otázka znie, ako je možné niečo také docieliť? Teda pýtam sa na teóriu, techniku, aká sa na to používa. Alebo teda môžete mi ozrejmiť túto problematiku? Odkázať ma na nejaké články apod.

Ďakujem za odpovede.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
zgerbiak



Založen: 22. 09. 2007
Příspěvky: 39

PříspěvekZaslal: 16. únor 2011, 10:17:05    Předmět: Odpovědět s citátem

Jednoducho.
Súradnice budú float, ale pre vykreslenie použiješ tie súradnice pretypované na integer.
Bude tam síce rozdiel v skutočnej pozícii a vykreslenej pozícii, ale ten rozdiel je zanedbateľný(max 1px).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 16. únor 2011, 10:48:03    Předmět: Odpovědět s citátem

jak říká "prasátko", i v Allegro bys měl použít float, ale před vykreslením přetypovat na int.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 16. únor 2011, 14:27:36    Předmět: Odpovědět s citátem

Přetypování zaokrouhlí dolů, je více typů zaokrouhlení, ale zde bych upřednostnil rychlost a použil to přetypování. Pak ještě když se budeš chtít pohybovat v libovolném úhlu, tak použiješ znalost jednotkové kružnice, tj. změna_x = cos úhel, změna_y = sin úhel. To je pro jednotkovou kružnici se středem v původní pozici objektu, takže dává hodnoty -1..1, tudíž ještě případně vynásobit délkou pohybu. Délka je třeba zadaná rychlost (např. 50 pixelů za sekundu) krát časový rozdíl mezi snímky hry. Musíš ale furt počítat pohyb s interními float hodnotami, jinak to bude zaokrouhlovat i v pohybu. A pokud chceš mít ve hře vícero rozlišení, tak pracuj ve virtuálním rozlišení uvnitř hry (např. 800x600) a až při vykreslení vynásob koeficientem do skutečného rozlišení a pak převeď na int (taktéž se dá pořešit různý poměr stran u displejů, ale to sem teď nebudu zatahovat).
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 17. únor 2011, 22:53:45    Předmět: Odpovědět s citátem

No některé frameworky (štítím se použít slovo knižnice Wink) to ve floatu i kreslí. (Použije to interpolaci.) A je jich myslím už dnes docela dost, považuju to dávno za standard.

Nicméně teda když zůstaneme u prehistorické představy, že kreslit se dá jen na celočíselné souřadnice, pak Houpova odpověď je vševystihující.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 17. únor 2011, 23:22:32    Předmět: Odpovědět s citátem

Al napsal:


Chápu to dobře, že když dám vykreslit pixel na bílé pozdí [0, 0.5] s barvou 0,0,0, tak budou na obrazovce pixely [0, 0] a [0, 1] s barvou 128, 128, 128? (případně s jinou barvou?)

Nejsem si jist, jestli tohle je žádoucí výsledek např. u pixel art grafiky.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 18. únor 2011, 07:32:58    Předmět: Odpovědět s citátem

Tak nevím, jak u alegra, ale http://www.antigrain.com/ to má vyřešeno velice přesně. Tedy když posunu o půl pixelu, objekt se jeví skutečně napůl cesty (mezi pixely).

Ale abychom nemátli, tak se taky může pozice prostě zaokrouhlit. Pixely pak sedí přesně...
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 18. únor 2011, 08:53:56    Předmět: Odpovědět s citátem

Houp napsal:
Al napsal:


Chápu to dobře, že když dám vykreslit pixel na bílé pozdí [0, 0.5] s barvou 0,0,0, tak budou na obrazovce pixely [0, 0] a [0, 1] s barvou 128, 128, 128? (případně s jinou barvou?)


Zas tak jednoduchý to není. Rasterizace bodu ovlivňuje víc pixelů okolo, aby se dosáhlo požadovaného efektu. A barva 128,128,128 je přecejen trochu tmavá, v praxi se používá světlejší. Oko vždy vnímá průměrnou barvu v nějakém okolí, nikoliv přesnou barvu pixelu. Dají se taky využít sub-pixel souřadnice pro LCD monitory (vyhlazují se tak třeba fonty), tzn. ve skutečnosti máš v ose X na LCD monitorech 3x větší rozlišení v odstínech šedi.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 18. únor 2011, 10:40:38    Předmět: Odpovědět s citátem

Houp napsal:
Chápu to dobře, že když dám vykreslit pixel na bílé pozdí [0, 0.5] s barvou 0,0,0, tak budou na obrazovce pixely [0, 0] a [0, 1] s barvou 128, 128, 128? (případně s jinou barvou?)


Abych to upřesnil a uvedl příklad, tak pixel na souřadnicích [0, 0.5] se skládá z dvou pixelů, které mohou mít následující barvu:

(R,G,B)(R,G,B) = (0, 128, 255)(255, 128, 0)

To je LCD sub-pixel pozicování. Hodnoty barev by se (myslím) měly ještě převést do sRGB a až pak zobrazit na monitor. Finta je v tom, že na LCD se za sebou střídají pruhy od každé barvy a mají pořadí přesně RGBRGB.... a je jedno, jestli pixel umístíš na (RGB)RGB, nebo na R(GBR)GB, nebo na RG(BRG)B. Pro oko v tom není rozdíl, pokud každá barva má stejnou intenzitu.

Pro ilustraci, to vpravo je LCD:
http://upload.wikimedia.org/wikipedia/commons/c/cb/XO_screen_01_Pengo.jpg
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 18. únor 2011, 11:16:15    Předmět: Odpovědět s citátem

LCD nemají vždy pořadí subpixelů RGB. Otoč si lepší desktopový LCD na výšku a máš Vertical-RGB (otáčení je i na PDA) nebo když výrobce v mobilu dá displej otočeně, tak máš BGR. V některých operačních systémech se dá proto pro vyhlazení písmen vybrat.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 18. únor 2011, 11:25:40    Předmět: Odpovědět s citátem

Jo, ale já se bavím o běžným LCD na PC, které si během hry neotáčíš, a kde je zaběhnutý určitý standard.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 18. únor 2011, 11:57:17    Předmět: Odpovědět s citátem

Dobře, pro hraní her by se dalo předpokládat RGB, ale pro aplikace obecně by to chtělo počítat s otočením monitoru (přeci jen se tam dokument mnohem lépe vejde).
_________________
Award-winning game developer


Naposledy upravil Ladis dne 18. únor 2011, 17:01:46, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Jack M.A.X.



Založen: 28. 07. 2007
Příspěvky: 60

PříspěvekZaslal: 18. únor 2011, 16:13:48    Předmět: Odpovědět s citátem

Heh a já jsem žil doteď v domnění že pixel je prostě pixel(bod) a že žádnej půl bod ani nejde udělat Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ICB



Založen: 14. 09. 2009
Příspěvky: 8

PříspěvekZaslal: 18. únor 2011, 20:15:38    Předmět: Odpovědět s citátem

Samozřejmě že se žádný půl-bod nejde udělat. Pixel buď existuje, nebo ne, subpixel je část informace o pixelu. Dřív se tomu říkala paleta barev. Zkus použít rotace objektu (cos,sin). Vlastně to co radil Ladis.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 19. únor 2011, 14:24:03    Předmět: Odpovědět s citátem

Ladis: A u otočení RGB displeje to nekončí, viz dále. Každopádně aspoň u ClearType to myslím řeší systém sám spolu s informací o rotaci displeje (když mám jeden monitor otočený a druhý normálně, tak písmo je vyhlazené na obou)

ICB: Subpixel nemusí být část informace jen o jednom pixelu. Existují totiž ještě displeje, které nemají mřížku identických bodů jako RGB, ale používají jiná uspořádání/vzory. Příkladem budiž AMOLED displeje a uspořádání pentile. Tam má jeden "pixel" jen dva subpixely, a to buď zelený a červený, nebo zelený a modrý. Navíc ty subpixely jsou různě veliké Wink V důsledku tak obraz tvoří kombinace více subpixelů aniž by se dalo říct, že něco konkrétního je pixel odpovídající zdrojovému obrazu Wink Zobrazit na takovém displeji standardní pravidelný 2D obraz je potom podstatně náročnější, a samozřejmě to zahazuje grafické optimalizace zaměřené na subpixely RGB.

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna