Lekce 3 - Barvy

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 <nehe (zavináč) connect.ab.ca>
přeložil: Milan Turek <nalim.kerut (zavináč) email.cz>

Zdrojové kódy

Lekce 3

<<< Lekce 2 | Lekce 4 >>>