Grafika komputerowa Zaj¦cia 6

Transkrypt

Grafika komputerowa Zaj¦cia 6
Graka komputerowa
Zaj¦cia 6
Wiadomo±ci dodatkowe:
• Teksturowanie uruchamiamy poprzez glEnable(GL_TEXTURE_2D). Potrzebne funkcje:
1. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, dataFormat, dataType, surfTexArray), gdzie w kolejno±ci GL_TEXTURE_2D oznacza »e deniujemy dwuwymiarow¡ tekstur¦ (mo»e by¢ jeszcze jedno- lub trzywymiarowa), 0 oznacza »e deniowana tekstura nie
jest pomniejszeniem innej tekstury, GL_RGBA oznacza system zapisu koloru tekstury, texWidth i
texHeight s¡ wielko±ciami tekstury, 0 oznacza »e nie chcemy dodatkowego pikselu na brzegu tekstury
(druga mo»liwa warto±¢ czyli 1 dodaje taki piksel; jest on u»ywany do gªadszego sklejania s¡siaduj¡cych tekstur, dataFormat powtarzamy format zapisu tekstury (GL_RGBA), dataType przyjmuje
warto±¢ GL_UNSIGNED_BYTE, natomiast surfTexArray jest adresem tekstury.
2. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) - deniuje sposób wyliczania koloru tekstury przy powi¦kszaniu
3. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) - deniuje sposób wyliczania koloru tekstury przy pomniejszaniu
4. glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, applicationMethod) - deniuje
sposób doklejenia tekstury: je±li jako applicationMethod wybierzemy GL_REPLACE dane tekstury
zast¡pi¡ dane z powierzchni, dla GL_MODULATE dane z tekstury zostan¡ pomno»one przez dane
z powierzchni, dodatkowe opcje to GL_DECAL oraz GL_BLEND
5. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP) - deniuje w
jaki sposób powtarza¢ tekstur¦ w kierunku 's', GL_CLAMP ±ciska tekstury (w przypadku gdyby
podane rozmiary byªy wi¦ksze od przedziaªu (0,1), natomiast GL_REPEAT powtarza.
6. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP) - deniuje w
jaki sposób powtarza¢ tekstur¦ w kierunku 't'
7. glTexCoord2f(s,t) - przyporz¡dkowuje wierzchoªkowi rysowanej gury wspóªrz¦dne (s, t) tekstury.
• Oswietlenie. Potrzebne funkcje:
1. glLight*(light-name, light-property, property-value) - np. glLightfv(GL_LIGHT0, GL_AMBIENT,
warto±¢) - dodatkowo mo»emy opisa¢ GL_DIFFUSE, GL_SPECULAR, GL_POSITION, gdzie warto±¢ ma posta¢ wektora GLoat warto±¢[] = x, x, x, x; mamy dost¦p do 8 ¹ródeª ±wiatªa. Dla
parametru GL_POSITION ostatnia liczba przyjmuje warto±¢ 1.0 - dla ¹ródªa bliskiego oraz 0.0 dla
¹ródªa dalekiego. Poªo»enie ¹ródªa ±wiatªa podlega transformacjom geometrycznym.
2. glEnable(GL_LIGHT0) - wª¡cza ±wiatªo opisane parametrami podanymi przez glLight*
3. glEnable(GL_LIGHTING) - wª¡cza renderowanie o±wietlenia
4. glLightf(nazwa, GL_CONSTANT_ATTENUATION, warto±¢) - opisuje zanik ±wiatªa wraz z odlegªo±ci¡ od ¹ródªa; inne parametry to GL_LINEAR_ATTENUATION, GL_QUADRATIC_ATTENUATION
5. glLightf(nazwa, GL_SPOT_DIRECTION, warto±¢) - kieruje snop ±wiatªa z bliskiego ¹ródªa we
wskazanym kierunku; parametry: GL_SPOT_CUTOFF, GL_SPOT_EXPONENT
6. glLightModel*(param-name, param-value) - ustawia globalne parametry modelu o±wietlenia, np.
ogólny poziom zewn¦trznego o±wietlenia. Np. glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_TRUE) - uruchamia poprawne liczenie rozbªysków.
7. glMaterialfv(GL_FRONT, GL_AMBIENT, warto±¢) - dodatkowo mo»emy opisa¢ GL_DIFFUSE,
GL_SPECULAR (opisuj¡ wspóªczynniki odbicia), GL_SHININESS, gdzie warto±¢ ma podobn¡ posta¢ jak powy»ej (dla GL_SHININESS podajemy tylko jedn¡ liczb¦). Pierwszy parametr mo»e
1
przyj¡¢ równie» warto±¢ GL_BACK lub GL_FRONT_AND_BACK.
8. glShadeModel(GL_SMOOTH) - sposób obliczania koloru dla o±wietlonej powierzchni - GL_SMOOTH
wylicza ±redni¡ pomi¦dzy wierzchoªkami, GL_FLAT przypisuje jeden kolor caªej powierzchni.
9. glNormal3f(x,x,x) - podaje jednostkowy wektor prostopadªy do powierzchni skierowany na zewn¡trz.
Zadania:
1. Prosz¦ uruchomi¢ teksturowanie i narysowa¢ sze±cian ze ±cianami oklejonymi tekstur¡ w czarno-biaª¡
szachownic¦.
2. Wykorzystuj¡c program GIMP, prosz¦ narysowa¢ tekstur¦, zapisa¢ j¡ w formacie 'c' i wykorzysta¢ do
narysowania sze±cianu.
3. Prosz¦ uruchomi¢ o±wietlenie i narysowa¢ o±wietlony obracaj¡cy si¦ stolik z czajnikiem. Prosz¦ sprawdzi¢
zachowanie si¦ obrazu przy zmianie parametrów o±wietlenia i materiaªów.
2