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

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 13. září 2009, 17:22:25 Předmět: |
|
|
Nouma> Mimochodem, psal jsi, že textury nemají vždy velikost 2^n x 2^m. Co takhle použít rectangle textury? Ty umožňují libovolné rozměry, akorát přijdeš o:
- mipmapy (asi nepotřebuješ)
- bilineární filtrování (dá se dodělat přes shader)
- opakování textur (taky se dá dodělat přes shader) _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Crypton

Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 13. září 2009, 22:37:05 Předmět: |
|
|
Ladis napsal: |
Pokud vím, všechny staré hry v době, kdy měly podporu sw renderingu, měly 8bitové textury. Můžeš si např. stáhnout zdroják Quake 2 a podívat se.
Dá se to udělat třeba takhle (viz tohle vlákno):
kód: |
glEnable(GL_TEXTURE_2D);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBindTexture(GL_TEXTURE_2D, texID);
glColorTableEXT(GL_TEXTURE_2D, GL_RGBA8, 256, GL_RGBA, GL_UNSIGNED_BYTE, palette);
glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, width, height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, texture); |
Ostatní řešení nejsou dostupná všude (např. GL_EXT_paletted_texture je jen na některých NVidiích).
BTW hrozně se mi líbí odpovědi typu "na co to potřebuješ", "to už se dneska nepoužívá" nebo obcházející řešení, které kvůli kompresi zprzní původní obrázek . |
Odpověd od GLEW:
citace: |
GL_EXT_paletted_texture: MISSING
------------------------
glColorTableEXT: MISSING
glGetColorTableEXT: MISSING
glGetColorTableParameterfvEXT: MISSING
glGetColorTableParameterivEXT: MISSING
----------------------
GL_ARB_imaging: MISSING
---------------
glBlendEquation: OK
glColorSubTable: MISSING
glColorTable: MISSING
glColorTableParameterfv: MISSING
glColorTableParameteriv: MISSING
... |
Už jsem to zkoušel, a opravdu tam ty funkce nemám  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 13. září 2009, 23:47:54 Předmět: |
|
|
Ladis napsal: |
obcházející řešení, které kvůli kompresi zprzní původní obrázek . |
Existuje software od ATI (i knihovna), který je určen na kompresi textur offline, docela mu to trvá, ale výsledek je poměrně kvalitní. To, co dělá OpenGL driver, je nejrychlejší implementace, kde vůbec nejde a nešlo o kvalitu.
Nejlepší obcházecí řešení je ale přes shader, tam se neztratí nic a je robustní. Kdyby dnes driver musel implementovat paletted_texture, dělal by to přesně tak, jak je zde naznačeno.
A na závěr pěknej příspěvek, kterej naprosto jasně dává najevo, že je lepší se shadery naučit raději dříve než později, protože pak už to bude těžší právě proto, že "zvyk je železná košile". Do toho:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=263880#Post263880 _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 14. září 2009, 09:30:17 Předmět: |
|
|
Chápu to správně, že tento způsob (přes ty shadery) bude fungovat jenom při GL_NEAREST filtraci textur? _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 14. září 2009, 09:59:59 Předmět: |
|
|
Rectangle textury nejdou filtrovat, takže o tom ani nemůže být řeč. Vždyť ale přece není problém napsat ten filtr v shaderu, ne? _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 14. září 2009, 10:08:57 Předmět: |
|
|
frca napsal: |
Chápu to správně, že tento způsob (přes ty shadery) bude fungovat jenom při GL_NEAREST filtraci textur? |
ano. mala chybycka v mojom priklade. ma tam byt +1.0/512.0 aby sa vzorka brala zo stredu pixela textury. teda (0,0) je lavy dolny roh laveho dolneho pixela v texture. stred laveho dolneho pixela je na (0.5/w , 0.5/h) koordinatoch. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Crypton

Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 14. září 2009, 12:24:57 Předmět: |
|
|
Tak ted jsem zmatený každý mi napsal jiný příklad, a taky se liší od těch co jsem našel na netu
Neměl by někdo fungující příklad? myslím tím kompletní shader a funkci která ho bude používat? byl bych moc vděčný, protože se mi nechce učit práce se shadery když dělám jen v 2D a k tomu musím přepisovat ten engine.
 |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 14. září 2009, 12:32:19 Předmět: |
|
|
nou ti dal příklad pro GL_TEXTURE_1D.
Já ti dal příklad pro GL_TEXTURE_RECTANGLE_ARB, který je lepší pro non-power-of-two textury a indexuje se pomocí souřadnic pixelů, ne pomocí normalizovaných koordinátů. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Crypton

Založen: 14. 05. 2009 Příspěvky: 306 Bydliště: The Void
|
Zaslal: 14. září 2009, 12:40:15 Předmět: |
|
|
Eosie napsal: |
nou ti dal příklad pro GL_TEXTURE_1D.
Já ti dal příklad pro GL_TEXTURE_RECTANGLE_ARB, který je lepší pro non-power-of-two textury a indexuje se pomocí souřadnic pixelů, ne pomocí normalizovaných koordinátů. |
Tu extenzi "GL_ARB_texture_rectangle" jsem včera přidal, taky kontroluji "GL_EXT_texture_rectangle" a "GL_NV_texture_rectangle", takže mi to funguje. Problém mám spíše s těmi shadery
No ale když žádný kompletní příklad na ty shadery nemáte, kouknu se ještě na netu, snad něco najdu  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 14. září 2009, 13:35:24 Předmět: |
|
|
Dávál jsem tu odkaz na lighthouse3d, kde jsou tutoriály. Stačí si je všechny projít a dát tomu pár hodin, je to až příliš lehký. NV a EXT verze nepoužívej, pouze ARB verze umí spolupracovat s shaderama. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
|