S jednoduch²m rozÜφ°enφm znalostφ ze druhΘ lekce budete moci pou₧φvat barvy. NauΦφte se jak plochΘ vybarvovßnφ, tak i barevnΘ p°echody. Barvy rozzß°φ vzhled aplikace a tφm spφÜe zaujmou divßka.
int DrawGLScene(GLvoid)// Vykreslovßnφ
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// Vyma₧e obrazovku a hloubkov² buffer
glLoadIdentity();// Reset matice
glTranslatef(-1.5f,0.0f,-6.0f);// Posun doleva a do hloubky
glBegin(GL_TRIANGLES);// ZaΦßtek kreslenφ troj·helnφk∙
Z minulΘ lekci si pamatujete, ₧e jsme kreslili troj·helnφk na levou Φßst obrazovky - to z∙stßvß. DalÜφ °ßdek bude naÜe prvnφ pou₧itφ p°φkazu glColor3f(r,g,b). Parametry v zßvorkßch jsou intenzita ΦervenΘ, zelenΘ a modrΘ barvy. Mohou nab²vat hodnot od 0 do 1. Pracujφ stejn²m zp∙sobem jako u funkce pro barvu pozadφ glClearColor(r, g, b, 1.0f). Nastavujeme barvu na Φistou Φervenou (₧ßdnß zelenß a modrß). S pou₧itφm tΘto barvy vykreslφme prvnφ vrchol troj·helnφku. Dokud nezm∞nφme barvu, bude mφt vÜe, co nakreslφme Φervenou barvu.
glColor3f(1.0f, 0.0f, 0.0f);// ╚ervenß barva
glVertex3f(0.0f, 1.0f, 0.0f);// Hornφ bod
Mßme umφst∞n prvnφ bod. Te∩ ne₧ umφstφme druh² bod, ale p°edtφm zm∞nφme barvu na zelenou.
glColor3f(0.0f, 1.0f, 0.0f);// Zelenß barva
glVertex3f(-1.0f, -1.0f, 0.0f);// Lev² dolnφ bod
Prav² dolnφ bod bude modr². Jakmile provedeme p°φkaz glEnd(), vybarvφ se troj·helnφk. Ale proto₧e mß v ka₧dΘm vrcholu jinou barvu, budou se barvy Üφ°it z ka₧dΘho rohu a nakonec se setkajφ uprost°ed, kde se smφsφ dohromady.
glColor3f(0.0f, 0.0f, 1.0f);// Modrß barva
glVertex3f(1.0f, -1.0f, 0.0f);// Prav² dolnφ bod
glEnd();// UkonΦenφ kreslenφ troj·helnφk∙
Vykreslφme Φtverec vypln∞n² modrou barvou. Je d∙le₧itΘ zapamatovat si, ₧e cokoli nakreslφme po nastavenφ barvy, bude vykresleno touto barvou. Ka₧d² projekt, kter² vytvß°φte pou₧φvß n∞jak² zp∙sob vybarvovßnφ. Dokonce i ve scΘnßch, kde je vÜe kresleno pomocφ textur, m∙₧e b²t funkce glColor3f() pou₧ita k dodßnφ nßdechu po₧adovanΘ barvy.
glTranslatef(3.0f,0.0f,0.0f);// Posun o 3 jednotky doprava
glColor3f(0.5f,0.5f,1.0f);// Sv∞tle modrß barva
glBegin(GL_QUADS);// ZaΦßtek kreslenφ obdΘlnφk∙
glVertex3f(-1.0f, 1.0f, 0.0f);// Lev² hornφ bod
glVertex3f( 1.0f, 1.0f, 0.0f);// Prav² hornφ bod
glVertex3f( 1.0f,-1.0f, 0.0f);// Prav² dolnφ bod
glVertex3f(-1.0f,-1.0f, 0.0f);// Lev² dolnφ bod
glEnd();// Konec kreslenφ obdΘlnφk∙
return TRUE;// UkonΦenφ funkce
}
V tomto tutorißlu jsem se sna₧il vysv∞tlit co nejvφce podrobnostφ o jednobarevnΘm a p°echodovΘm vybarvovßnφ mnoho·helnφk∙. Pohrajte si s tφmto k≤dem, zkuste zm∞nit hodnoty ΦervenΘ, zelenΘ a modrΘ na jinß Φφsla. Podφvejte se co se stane.
napsal: Jeff Molofee - NeHe
p°elo₧il: Milan Turek