Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 13. únor 2011, 23:38:18 Předmět: gui, filtering textur a shadery |
|
|
Hola,
chtěl bych se zeptat, jak vyřešit problém s gui v directX. Objekty mapuju z jedné textury, která vypadá dejme tomu takhle (snad to wz.cz zobrazí):
Odtud mapuju všechna hejblátka a tlačítka. Funguje to krásně, akorát když zmenším/zvětším gui objekt, potřebuju nějak rozumně filtrovat texturu, aby to nebylo pixelované. A tady nastává kámen úrazu, protože filtering tahá k sobě okolní pixely mimo namapovanou oblast. Podobnou potíž jsem měl kdysi se skyboxem v OpenGL. Jde nějak oříznout filtering pomocí FFP pouze pro mapovanou oblast? Nebo budu muset dopsat shader?
Díky. _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 13. únor 2011, 23:59:59 Předmět: |
|
|
Nebylo by jednodušší si každý ten objekt dát do jedné textury? _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 14. únor 2011, 01:34:20 Předmět: |
|
|
To se mu bude opakovat z druhé strany nebo jak si to nastaví, ale nic z toho to neřeší. Šlo by ale mít v textuře pixel tlustý okraj okolo . _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 14. únor 2011, 02:13:49 Předmět: |
|
|
Jde to řešit jenom shaderem. Nebo samostatnou texturou pro každý objekt. Nebo tlustým okrajem. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 14. únor 2011, 07:01:04 Předmět: |
|
|
Jedno GUI to řeší tak, že specifikuješ rohy a okraje. Textura se pak na rozích zobrazí přirozeně, na okrajích se v jedné dimenzi roztáhne a uprostřed se úplně roztáhne. Taky by s tímhle postupem asi šlo udělat vícenásobné opakování textury. _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 14. únor 2011, 07:53:24 Předmět: |
|
|
No v shaderu můžeš udělat opakování libovolné části textury (=podtextura). Stačí k tomu věci jako frac a clamp na výpočet koordinátů a texture fetch s parciálníma derivacema na kontrolu filtrování zejména na okrajích podtextury. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Mem

Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 14. únor 2011, 08:58:11 Předmět: |
|
|
if.then napsal: |
Jedno GUI to řeší tak, že specifikuješ rohy a okraje. Textura se pak na rozích zobrazí přirozeně, na okrajích se v jedné dimenzi roztáhne a uprostřed se úplně roztáhne. |
Podobný systém nabízí i Android OS v drawable zvaném Nine-patch
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
Zní to docela rozumně, a v tomhle případě by tedy stačilo nakombinovat jednu texturu 1:1 pro okraje a vnitřek si pak roztáhnout s filtrováním, resp. opakovat |
|
Návrat nahoru |
|
 |
Vilem Otte

Založen: 18. 09. 2007 Příspěvky: 462 Bydliště: Znojmo - Sedlesovice, Kravi Hora
|
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 15. únor 2011, 10:30:39 Předmět: |
|
|
Díky za rady, pro začátek by to mohl vyřešit ten tlustej okraj. Nebudu si to dělat zbytečně složitější, jde mi v podstatě jen o funkčnost a relativně slušný vzhled.
Panel s opakováním uvnitř už tam je.  _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
|