.[ ČeskéHry.cz ].
OpenGL - rozměry a pozicování textur

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 13. prosinec 2013, 22:46:58    Předmět: OpenGL - rozměry a pozicování textur Odpovědět s citátem

Teď trochu ladím 2D engine a narazil jsem na dvé podobné nejasnosti. Když chci vykreslit obrázek jedna ku jedné do OpenGL okna, tak jaké přesně mám dát pozice trojůhelníků, ve kterých bude vykreslena ta textura? Prostě klasicky si vytvořím dva trojůhelníky (aby to udělalo obdelník) a namapuju na něj texturu. Levý dolní bod dám na souřadnice [0,0]. Kam mám dát pravý horní roh? Na [image.size.x, image.size.y] nebo na [image.size.x-1, image.size.y-1]?

Druhý podobný problém: když vykresluji scénu, neměl bych view matici translatovat o 0.5px? To aby souřadnice [0,0] nebyla v levém dolním rohu levého dolního pixelu, ale uprostřed levého dolního pixelu. Když jsem to řešil minule, tak jsem to translatoval o 0.5px (asi jsem z něčeho odvodil, že je to tak lepší), ale teď tam ten rozdíl nevidím a naopak mi přijde, že se to líp vykresluje bez té translace.

Teď mám dost nestabilní ovladač grafiky, takže o všelijaké grafické artefakty nemám nouzi. Sice to asi pomůže vyrobit odolnější software, ale zas na takové jemné ladění to moc není Very Happy.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nou



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

PříspěvekZaslal: 14. prosinec 2013, 13:17:07    Předmět: Odpovědět s citátem

ak si nastavis klasicku glOrtho(0, width, 0, height, -1, 1) maticu tak lavy dolny roh obrazovky bude mat suradnice [0;0] a horny pravy zase [width;height]. ALE stred pixela bude mat suradnice [0.5;0.5] takze ak chces vykreslit bod pixelovych suradniciach [100;200] musis poslat suradnice [100.5;200.5]. na druhu stranu ak chces vykreslit stvorec tak musis pouzit cele cisla ako suradnice aby si pokryl cely pixel.

to iste plati aj pre textury. suradnica na ktorej je stred texelu ma suradnice [0.5/tex_width;0.5/tex_height] v konecnom dosledku sa teda tieto dva posuny vyrusia ak chces vykreslovat 1:1 texturu na obrazovku.

v skratke ak chces vykreslit 1:1 texturu tak vertexy maju mat suradnice ako cele cisla. texturove koordinaty tiez potom tiez zadavat aby na hranicu jednotlivych texelov teda [x/tex_width;y/tex_height]

dobry test by mal byt porovnanie vykreslenia s GL_NEAREST a GL_LINEAR filtrovanim. ak tam nie je ziadny rozdiel tak to kreslis spravne. ak je GL_LINEAR rozmazane tak niekde robis chybu.
_________________
Najjednoduchšie chyby sa najtažšie hľadajú.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 14. prosinec 2013, 16:15:45    Předmět: Odpovědět s citátem

Pokud chceš čistě obrázek bez filtrování, tak taky můžeš použít texelFetch, který bere přímo souřadnice v rozměru obrázku a ne normalizované na <0, 1>
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 14. prosinec 2013, 18:44:33    Předmět: Odpovědět s citátem

Diky za informace. Jdu na to Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
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