6 - realtime programlamaya giriş = nesnelerin rengi, vertex color denilen şey

6 - realtime programlamaya giriş = nesnelerin rengi, vertex color denilen şey

chrome_nickel

opengl ile, bir poligona renk atama şansımız yok.
bir poligona renk atayamıyorsak neye renk atayabiliyoruz? elbette vertexlere...

bir poligonun bir vertex´i yeşil olursa, o poligonun o köşesine doğru yeşile dönüşen bir gradient oluşacaktır. eğer bir poligonun rengini değiştirmek istiyorsanız, o poligonun bütün vertex´lerini aynı renk yapabilirsiniz.

ChromiGL r1.0 elinizde yoksa, atelyedeki sabit başlıkları takip ederek ChromiGL r1.0´ı indirin.

aşağıdaki kodları SahneCiz fonskiyonunun içine yazın.

glBegin(GL_POLYGON);
glVertex3f(-5.0,10.0,0.0);
glVertex3f(-5.0,0.0,0.0);
glVertex3f(5.0,0.0,0.0);
glVertex3f(5.0,10.0,0.0);
glEnd();

bu kodlar size, varsa renderda kullanılmış en son renk kodlarında belirtilen renkte bir poligon çizecektir. eğer daha önce hiç renk belirtilmemişse, poligon beyaz olacaktır. bizim grid yapısının oluşumundan dolayı, poligonumuz gri görünecek.

şimdi, kodları şu şekilde değiştirelim

glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-5.0,10.0,0.0);
glVertex3f(-5.0,0.0,0.0);
glVertex3f(5.0,0.0,0.0);
glVertex3f(5.0,10.0,0.0);
glEnd();

şimdi poligonumuz kırmızı oldu.

glColor3f(r, g, b) fonksiyonu ile biz, bu fonksiyondan sonraki vertexlerin kırmızı çizilmesini emrediyoruz. biz yeniden glColor3f fonksiyonu ile renk tanımlayana kadar, bütün vertexler en son tanımladığımız renge sahip olacaklar.

kodları bi de şu şekilde değiştirelim.

glBegin(GL_POLYGON);
glColor3f(1.0, 0.0, 0.0);
glVertex3f(-5.0,10.0,0.0);
glColor3f(0.0, 1.0, 0.0);
glVertex3f(-5.0,0.0,0.0);
glColor3f(0.0, 0.0, 1.0);
glVertex3f(5.0,0.0,0.0);
glColor3f(1.0, 1.0, 0.0);
glVertex3f(5.0,10.0,0.0);
glEnd();

gökkuşağı gibi poligon oldu :).. her vertexten önce bir glColor3f tanımladık. böylece 3 her vertex ayrı bir renge sahip oldu. eğer başka renk tanımlamadan yeni bir vertex çizdirirsek, o vertex en son tanımlanmış renge sahip olacaktır. eğer sahnemizdeki bütün nesnelerin renginin sarı olmasını istersek, bütün sahne kodlarının başında bir kere glColor3f(1.0,1.0,0.0); yazmamız yetecektir.

2006-08-28 16:13:31