Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Pismo

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Pismo

Autor: Eosie

8:07:00 17.01.2009

Jinak osobně renderuju text tak, že si pomocí FreeType vykreslím text do 8bpp bitmapy v odstínech šedi. Tady bohužel pak ztrácím sub-pixel filtrování pro LCD displaye, protože na to potřebuju 24bit RGB, ale budiž. Kdyby někoho zajímalo, jak se pracuje s knihovnou FreeType, doporučuju googlit "FreeType 2 tutorial" (má to 2 díly). NeHe tutoriál týkající se FreeType radši ani nečtěte, je to prasečina a nic se tam nedovíte.

Při generování bitmapy pomocí FreeType pak ještě řeším zarovnání textu (vlevo, vpravo, na střed, do bloku) a jeho zalamování na odstavce. Jak mám připravenou tu bitmapu s vykresleným textem, naloaduju ji do OpenGL jako texturu GL_INTENSITY8/GL_LUMINANCE8/GL_R8. Na formátu mi tak nezáleží, protože v shaderu beru pouze .x komponentu (shadery používám na všechno, tedy i na text). Rozměry textury dávám libovolné, přecejenom dneska už s tím hardware nemá problém, když si dá člověk pozor. Text pak v shaderu obarvím a pošlu na výstup. Občas na to hodím ještě nějakej efekt (bloom vypadá hodně dobře, jde udělat i neon), nicméně na věci vyžadující velkej blur je lepší si už při načítání textury spočítat i texturu s mnohem menší velikostí, ale rozmazanou (zmenšení na 1/4 nebo 1/16 velikosti pomocí box filtru bohatě stačí, jednoduchej 3x3 Gaussův blur pak ještě udělám v shaderu, ať je to víc máznutý).

Když to shrnu, tak se v podstatě jedná o vykreslení textu do bitmapy pomocí FreeType, načtená pak jako textura, která se mapuje na obdélník v OpenGL a s pixel shaderem na jednoduché efekty.

Neříkám, že můj způsob je v něčem dobrej nebo univerzální. Prostě se mi to zrovna tak hodilo. Pokud má někdo nápad, jak tohle vylepšit nebo má vlastní způsob, jak vykresluje v OpenGL text, ať se taky podělí. ;)

EDIT: odstraněn kec s patentem

Citovat příspěvek

 

Re: Pismo

Autor: Eosie

22:28:19 15.01.2009

Myslím, že deprecated to není.

Citovat příspěvek

 

Re: Pismo

Autor: frca

22:49:33 14.01.2009

Od poslední rady noua odrazuju. Podporuje to sice prakticky každá karta, ale prakticky NIKDE to nebude fungovat správně. Stačí OpenGL okno posunout trochu mimo monitor nebo kopírovat texturu větší než okno. Prostě v dnešní době je to snad to nejhorší řešení.
frca

PS: Není glCopyTexImage2D už v GL 3 deprecated?

Citovat příspěvek

 

Re: Pismo

Autor: nou

22:12:44 14.01.2009

len pre buducnost musis si urcit aky HW na je na to potreby a potom sa toho drzat. ale rychlejsie riesenie je a to podporuje prakticky kazda graficka karta (GL verzie 1.1) je glCopyTexImage2D(). kopyruje data z backbufferu teda odtial kde sa normalne kresli.

Citovat příspěvek

 

Re: Pismo

Autor: Druid

19:56:28 14.01.2009

mne je jasne ze graficke to robia rychlejsie:) ale co ked zrovna niekto taku graficku amt nebude? ja nerobim nejaky zlozity projekt a preto to hcem co najoptimalnejsie, ja tam potom mozem spravit aj kod na tie rozsirenia, ale zatial to chcem takto optimalne, fakt je to len velmi jednoduchy projektik:) ale zasa vseobecne ma zaujima ako to robit tak aby to bolo co najrychlejsie tiez do buducna

Citovat příspěvek

 

Re: Pismo

Autor: nou

19:10:55 14.01.2009

no GL_EXT_framebuffer_object podoporuju karty od Radeon 9600 a Nvidia FX 5000 a bude to urcite omnoho rychlejsie ako blitovanie na CPU.

Citovat příspěvek

 

Re: Pismo

Autor: Druid

17:21:14 14.01.2009

ale tam treba uz rozsirenie aby to graficka podporovala, ono slo by to spravit tak ze ak to podporuje tak to vyuzije ale to je uz len kod navyse, najlepsie by mi bolo keby to nepotrebuje ziadnu graficku, sak nieco take uz mam len zas sa mi tam ten alfakanal pokaslal:/

Citovat příspěvek

 

Re: Pismo

Autor: Eosie

11:00:05 14.01.2009

Blit z textury do textury:

1) Vyrenderovat texturu do textury s nearest filtrováním. Pokud jsou stejné velikosti a rozumné koordináty, bude to pixel na pixel. Na rendering do textury jsou 3 metody: A) kopírování z backbufferu B) PBuffery C) Framebuffer Object.

2) Nejvhodnější by mělo být glBlitFramebufferEXT z extenze GL_EXT_framebuffer_blit, je to taky součást GL_ARB_framebuffer_object a dokonce i GL3. Použití:

[code]glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, sourceFBO);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, destinationFBO);
glBlitFramebufferEXT(0, 0, width, height, 0, 0, width, height, GL_COLOR_BUFFER_BIT, GL_NEAREST);[/code]

Citovat příspěvek

 

Re: Pismo

Autor: frca

9:51:05 14.01.2009

Jaká metoda je nejlepší na blitting textu z textury do textury? Když to má být přesné na pixel, tak by to mohlo být glTexSubImage2D. Nevíte ale o něčem rychlejším? Myslím, že dnes, když se řeší nějaký problém v OpenGL, tak by se měla uvést i nejrychlejší metoda, kterou OpenGL umožňuje, protože to rozhodně není jasné a dá se to velice těžko zjistit. Samozřejmě by šlo experimentovat, ale to žere čas, který by se dal využít mnohem líp.
Díky,
frca

Citovat příspěvek

 

Re: Pismo

Autor: nou

22:16:33 12.01.2009

hej vyrendrujes si text do textury a tu potom budes mapovat na objekt.

Citovat příspěvek

 

Re: Pismo

Autor: Druid

17:33:11 12.01.2009

no takto:) potrebujem text, ten text sa bude casto menit a bude ho vela:)
takze v tomto pripade bude asi vhodnejsi blitering nez multitexturing ze? tak nejak to mam chapat:)

Citovat příspěvek

 

Re: Pismo

Autor: frca

22:49:04 11.01.2009

To by mě samotného zajímalo, jak dát na polygon pomocí multitexturingu text poskládaný třeba z 10000 písmen z jedné textury s fontem (protože každé písmeno dávat do jedné textury je blbost). Není potřeba i render do textury?
Edit: nou byl rychlejší :)

Citovat příspěvek

 

Re: Pismo

Autor: nou

22:46:15 11.01.2009

tak takto co presne sa snazis dosiahnut? ak napisat nejaky text na onket tak asi bude najvhodnejsie ten text dat priamo do textury a tu nanasat. ak to dynamicky tak to nejak blitovat do textury a tu kreslit. ale ak mas v jednej texture vsetky pismenka tak si neviem predstavit jednoduchy sposob ako to jednoducho robit.

Citovat příspěvek

 

Re: Pismo

Autor: Druid

15:47:32 11.01.2009

jj to vim, ale ked natexturujem texturu do prostriedku toho polygonu je ta predtym textura tmava, iba na tom mieste kde je ta druha je normalna, a este tam vznika taky problem ze ja kazde pismenko potrebujem volat v coord,:/ teraz neviem ci si mam spravit vlastny obrazok pre kazde pismenko a tak to tam davat ale stale je ta textura tmava a nou
alebo ako spravit aby som z textury vybral urcite pismenko a natexturoval by som ho na polygon na urcite miesto na to mi treba 4 udaje a ked som skusal dat coord 2x za sebou tak to neslo vobec:/

Citovat příspěvek

 

Re: Pismo

Autor: nou

16:30:24 10.01.2009

1. kazda "vrstva" textury moze mat samostatne texturovacie koordinaty. a tie nemusia byt z rozsahu 0-1.glMultiTexCoord2f(GL_TEXTUREi, s, t); kde i je cislo texturovacej jednotky "vrstvy"
2. ak nechces aby sa textura opakovala tak nechaj okraj textury priehladny a nastav GL_CLAMP texture cez glTexParameteri() vid manual http://opengl.org/sdk/docs/man/

Citovat příspěvek

 

Re: Pismo

Autor: Druid

15:48:03 10.01.2009

tak skusal som to spravit cez multitexturing a prisiel som na jednu vec:/ vsetko je v pohode aj sa to nacita aj alfa ide ako ma:) ale to pismo sa neda nijako upravovat >> napr potrebujem aby ten text nesiel uplne od horneho okraja a od lavej strany polygonu ale aby tam bol povedzme 1cm volneho miesta, pricom glTexCoord mapuje texturu vzdy od 1 rohu polygonu do dalsieho:/ ako riesit toto?
napada ma ze volne miesta mozem namapovat texturou ale neni to az moc zbytocne zlozite? ked na 1 polygone bude 1 velka textura a mnoho malych?
potom ma napada Blittering, ale tiez neviem ci by nebolo moc narocne ked budem do 1 textury vkladat tak vela mini obrazkov ale mozno by to bolo rychlejsie ako multitexturing
alebo je este nieco ine, napr nejaka predprogramovana OGL fce ktora napapuje texturu aj do stredu polygonu?

Citovat příspěvek

 

Re: Pismo

Autor: nou

21:19:32 04.01.2009

ano odpovedal si si sam a to multitexturing. teda nanesenie dvoch textur na jeden polygon.

http://mizanin.szm.sk/10-19.html pozri program 10

Citovat příspěvek

 

Pismo

Autor: Druid

20:45:54 04.01.2009

hoj, :/ hmm tak teraz uz fakt neviem co s tym :/ potrebujem v OGL pismo :/ ano daju sa tam preniest windows fonty, ine fonty aj obrazkove fonty ale ja mam kvader a ten potrebujem popisat pismom, to by este v pohode slo ale ja ten kvader ohybam a to pismo je vzdy na vlastnom polygone takze sa s tym kvaderom neohyba tak ako by sa mal:/
neviem ako to spravit, mozno multitexturing alebo je aj nejaka ina moznost? lebo ja uz fakt neviem a to pismo tam byt musi a musi sa tocit tak isto ako ten kvader to je klucove v tom programe
dik za kazdu radu

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: