Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.InicjowanieoknawtradycyjnymOpenGL
PrzystosowanieoknadowspółpracyzOpenGL
zapomocąfunkcjibibliotekiWGL.KlasaOknoGL
25
Dotejporyzajmowaliśmysięjedynieutworzeniemoknadlaaplikacji.Niewywo-
łaliśmyjeszczeżadnejfunkcjiOpenGL!Cogorsza,gdybyśmysięzdecydowalina
użyciebibliotekiMFC,towszystkienapisanedotejporyinstrukcje,łączniezklasą
Okno,byłybyzbędne.Terazzajmiemysięprzystosowaniemoknadowyświetlania
graki3DzapomocąOpenGL.Aponieważwtymrozdzialepozostajemyprzy
tradycyjnymOpenGL(mowaowersjach1.*i2.*),funkcjeOpenGLnadalniebędą
używane.Tosięzmieniwrozdziale4,gdybędziemyprzystosowywaćoknodo
współpracyznowoczesnymOpenGLdziałającymwprolurdzennym.Wtradycyj-
nymOpenGLdotegoceluwystarcząnamfunkcjeWGL.WGL(czasemnazywany
wiggle)toczęśćWinAPI,którazawierafunkcjepowodujące,żeoknowsystemie
WindowsmożewyświetlćgrakętworzonązużyciemOpenGL.
OilekoddotychczasowyniemiałnicwspólnegozbibliotekąOpenGL,to
nowykod,chociażnarazienadalniebędziezawierałwywołańfunkcjiOpenGL,
jużdotejbibliotekiwyraźnienawiązuje.Dlategoumieścimygownowejklasie
OknoGL,dziedziczącejpoklasieOkno.Denicjęnowejklasydodajmydopliku
nagłówkowegoOknoGL.h.Ponieważterazbędziemytworzyćobiektoknonowego
typuOknoGL,należyusunąćdeklaracjętegoobiektuznajdującąsięzaklasąOkno
idodaćjązanowąklasą(listing1.12,por.listing1.3).
Listing1.12.KlasaOknoGLodpowiedzialnabędziezawspółpracęoknazbiblio-
tekąOpenGL
classOkno
{
iii
}okno;
classOknoGL:publicOkno
{
private:
HGLRCuchwytRC;//uchwytkonteksturenderingu
HDCuchwytDC;//uchwytprywatnegokontekstuurządzeniaGDI
public:
OknoGL():Okno(),uchwytRC(NULL),uchwytDC(NULL){};
}okno;
Kolejnymzadaniemjestustalenieszczegółówdotyczącychgłębokościkolorów
wyświetlanychprzezOpenGL,buforagłębi(ang.z-buffer),buforaszablonu(ang.
stencilbuffer)iinnychustawień,nazywanychogólnieformatempikseli.Dotegoza-
daniaoddelegujemyfunkcjęskładowąnowejklasyOknoGL::UstawFormatPikseli