<< >> Title Contents Index

5. Värit


Useimmissa OpenGL-sovelluksissa piirretään värikkäitä näkymiä näytölle. Näyttö koostuu pikseleistä, jotka voivat pienimmillään olla n. 0.25 x 0.25 mm:n kokoisia. Jokaiselle pikselille on määrättävä erikseen, minkä väriseksi se tulisi piirtää. Jos käytössä on 15 tuuman näyttö ja se on kokonaan valittu piirtoalueeksi, OpenGL laskee reilun miljoonan pikselin väriarvot ennen näkymän piirtämistä! OpenGL-ohjelmoinnissa pikselin väriarvo voidaan määrätä kahdella eri esitystavalla eli RGBA-arvoilla tai väri-indeksillä.

5.1. RGBA

Yleisempi ja monessa tapauksessa ainoa mahdollinen vaihtoehto on RGBA-esitystapa. RGBA-esitystavassa määrätään jokaiselle pikselille punaisen (R), vihreän (G) ja sinisen (B) värin määrä. OpenGL:ssa määrätään väriarvo useimmiten väliltä [0.0, 1.0] olevalla reaaliluvulla. Luku suhteutetaan sen jälkeen käytössä olevien värien määrään.

Jos haluttaisiin valita piirtoväriksi kirkkain mahdollinen punainen, kutsuttaisiin esimerkiksi aliohjelmaa glColor3f(1.0, 0.0, 0.0). Mikäli kaikki arvot ovat ykkösiä, tuloksena on valkoinen, ja vastaavasti kaikkien ollessa nollia, tulos on musta. Piirtovärin määräävän aliohjelman kutsu RGBA-esitystavassa on yleisesti glColor{34}{b s i f d ub us ui}v(TYPE red, TYPE green, TYPE blue, TYPE alpha). Viimeisellä alpha-parametrilla ei ole suoranaista vaikutusta väriin, mutta sitä voidaan käyttää apuna mm. reunojen pehmentämiseen ja läpinäkyvyyden saavuttamiseen. Mikäli jollekin pikselille on jo määrätty väriarvo, mutta toinen objekti osuu samalle pikselille, jouduttaisiin lopullinen väriarvo valitsemaan kahden eri väriarvon väliltä. Parametri alpha mahdollistaa kuitenkin sen, että voidaan valita näiden kahden väriarvon sekoitus ja näin pehmentää objektien reunoja.

5.2. Väri-indeksi (Color-index)

Väri-indeksi (Color-index) määrää yksikäsitteisen lukuarvon jokaiselle värille. Color-index-esitystavan huono puoli on kuitenkin se, ettei siinä ole mahdollista käyttää samanlaista "sekoitinta" kuin RGBA-esitystavassa. Väri-indeksin käyttöä ei suositella kuin muutamissa poikkeustapauksissa, koska RGBA toimii paremmin myös bittikarttojen ja valaistuksen kanssa.


<< >> Title Contents Index