Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
32
}
NowoczesnyOpenGL
//Zbuforanaekran
SwapBuffers(uchwytDC);
FunkcjaglClearsłużydoczyszczeniabuforów.Jejargumentwskazuje,żeczy-
ścimydwa:buforramkiibuforgłębokości.Obapowstająpodczasrenderowania.
Zawartośćpierwszegobezpośrednioprzekładasięnaobrazwidzianynaekranie.
Drugiumożliwiadecydowanieokolejnościustawieniaobiektówwzględemka-
meryiwykorzystywanyjestwteściegłębipowodującym,żenaekranieobiekty
bliższeprzesłaniajądalsze.WkontekściefunkcjiglClearwartowspomniećtakże
ofunkcjiglClearColor,któraumożliwiawybórkoloru,jakimzapełnianyjest
buforramkiwtrakciejegoczyszczenia.Kolortenbędziekoloremtłanaszejsceny,
gdybyśmyzatemużyliinstrukcjiglClearColor(1i0f,1i0f,1i0f,1i0f);,
aktorzypojawilibysięnabiałymtle,anienadomyślnymczarnym.
Zgodniezzapowiedziąwyświetlamynascenietrójkąt.Odpowiadazatogru-
painstrukcjirozpoczynającasięodglBegin,akończącanaglEnd.Parametrem
pierwszejznichjeststałaidentykującaprymityw,czylirodzajrysowanejgury
wnaszymprzypadkuGL_TRIANGLES(pol.trójkąty).Międzynimiznajdujesię
natomiastseriatrzechwywołańfunkcjiglVertex,któraustalapozycjętrzech
werteksówwierzchołkówtrójkąta.Wszystkietefunkcje,podobniejakfunkcje
związanezmacierzamiOpenGL,znikłyzprolurdzennego.Wprolurdzennym
trzebabędziekorzystaćzeznaczniewydajniejszychbuforówwerteksów.
WielefunkcjiOpenGL,zarównousuniętychzprolurdzennego,jakipozo-
stawionych,możewystępowaćwkilkuwersjach.NaprzykładfunkcjaglVertex
możeprzyjmowaćdwa,trzylubczteryparametry,wzależnościodtego,ilenie-
zerowychwspółrzędnychchcemyustawić.Argumentymogąbyćteżprzekazane
wjednowymiarowejtablicy.Cowięcej,argumentymogąbyćżnegotypu.Za-
zwyczajwgracestosujesięliczbyrzeczywistepojedynczejprecyzjioat,ale
możliwejestrównieżużyciedouble,anawetint.Chcącuniknąćpomyłkiinie-
jawnychrzutowańobecnychwCiC++,twórcybibliotekiOpenGLzignorowali
możliwośćprzeciążaniafunkcji(zresztąniewszystkiejęzykiprogramowaniają
oferują)iprzygotowalipokilkawersjiniemalkażdejfunkcji.Ichnazwyżnią
sięprzyrostkami.Cyfrawprzyrostkuoznaczaliczbęparametrów,aliteraich
typ.glVertex2doznaczazatemwersję,którapobieratylkowspółrzędnexiy
typudouble,natomiaststosowanaprzeznaswersjaglVertex3fprzyjmujejako
argumentytrzywspółrzędne:x,yorazztypuoat.Jakwspomniałem,argumenty
mogąbyćprzekazanewtablicy.Wówczasdopreksudodawanajestliterav,np.
glVertex3fvoznacza,żeargumentemfunkcjijestwskaźnikdooat,afunkcja
spodziewasiętablicyztrzemaelementami.
SposóbwywoływaniametodyRysujScenęzależyodtego,jakicharakterma
aplikacja.Jeżelibędziezawieraćstatycznyobraz3D,liczbęwywołańtejmeto-
dywtrakciedziałaniaaplikacjimożnaograniczyćdominimum,adokładniedo