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