Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 14. srpen 2009, 18:38:45 Předmět: NeHe font z lekce 17 + světlý podklad |
|
|
Dobrý den,
K nakreslení fontu v OpenGL používám třídu založenou na NeHe tutoriálu 17. Mám ovšem jeden problém - pokud fontem překresluji světlejší podklad (např. bílý), není překreslen barvou fontu (tj. font se od bílými pixely "ztrácí").
Myslím, že je to kvůli funkci glBlendFunc(GL_ONE, GL_ONE), která s těmito parametry pouze "přidává", nikoliv "odebírá" barvu pixelu. Nevíte jak to spravit?  _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
Poky

Založen: 29. 06. 2009 Příspěvky: 184 Bydliště: Písek / Plzeň
|
Zaslal: 14. srpen 2009, 18:42:06 Předmět: |
|
|
Myslím, že TADY najdeš řešení. Musíš zkoušet  |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 14. srpen 2009, 18:59:02 Předmět: |
|
|
Když já už zkoušel snad všechno...
P.S.: Jsou tu podezřelé výpadky, rychle zálohujte  _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 14. srpen 2009, 22:20:06 Předmět: |
|
|
skusil si glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)? tato funkcia nastavuje akym faktorom sa vynasobia farby. tie sa defaultne rataju takto. vysledok = sfaktor * zdrojova_farba + dfactor * cielova_farba. (nasobi sa kazda zlozka osobitne) zdrojova farba je farba ktora prave prichadza. teda farba textu napr. cielova farba je co uz bolo zapisane do bufferu predtym. pri GL_ONE, GL_ONE je faktor 1 teda sa farby len scitaju. GL_ZERO farbu vynuluje. teda ked sa nastavi pre sfaktor GL_ZERO tak sa uz nic neda nakreslit pretoze priciataju sa len nuly. GL_SRC_ALPHA vynasoby farbu alfou ktora je ulozena v texture. takze ked je v alfa kanali 0 tak je priehladna ked 1 tak nie. GL_ONE_MINUS_SRC_ALPHA zase zoslabi povodnu farbu tym viac cim nepiehladnejsia je prichadzajuca textura. tato kombinacia GL_SRC_ALPHA a GL_ONE_MINUS_SRC_ALPHA prakticky zabezpeci linearnu interpolaciu medzi danymi farbami.
inak 17 lekcia presvita kvoly tomu ze bmp nema alfa kanal. takze nastav glBlendFunc() a vytvor si textutu ktora bude mat alfa kanal. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
if.then
Založen: 13. 04. 2008 Příspěvky: 579
|
Zaslal: 15. srpen 2009, 09:26:35 Předmět: |
|
|
Ó ano! Stačilo udělat texturu fontu ve formátu tga a v GIMPu jí dát černou do alfy. Poté glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) a je to! Moc diky.
Tagy: OpenGL, font, písmo, glBlendFunc, textura, alpha, alfa
(Pomáhejme strýčkovi Googlovi)  _________________ For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++. |
|
Návrat nahoru |
|
 |
|