Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
J.Matulewski,T.Dziubak,M.Sylwestrzak,R.Płoszajczak,Grafika.Fizyka.Metodynumeryczne.
Symulacjefizycznezwizualizacj
ą
3D,Warszawa2010
ISBN978-83-01-16178-1,©byWNPWN2010
1.Inicjacjaoknadlagrafiki3DgenerowanejzapomocąOpenGL
Listing1.10.Aktualizacjapólprzechowującychrozmiarobszaruoknadostępnego
dlaprogramisty
LRESULTCOkno::WndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
switch(message)
{
caseWM_DESTROY://zamykanieokna=>kończenieaplikacji
PostQuitMessage(0);
break;
caseWM_SIZE://Zmianarozmiaruokna
RECTrect;
GetClientRect(hWnd,&rect);
szerokoscObszaruUzytkownika=rect.rightrect.left;
wysokoscObszaruUzytkownika=rect.bottomrect.top;
break;
default://automatyczneprzetwarzaniekomunikatów
return(DefWindowProc(hWnd,message,wParam,lParam));
}
return0L;
}
PrzystosowanieoknadowspółpracyzOpenGL
zapomocąfunkcjibibliotekiWGL
25
Wszystko,codotejporyzrobiliśmy,toutworzenieoknadlaaplikacji.Niewy-
wołaliśmyjeszczeżadnejfunkcjiOpenGL!Cogorsze,gdybyśmyzdecydowalisięna
wykorzystaniebibliotekiMFClubC++BuilderaijegobibliotekiVCL,towszystkie
napisanedotejporyinstrukcje,włączniezklasąCOkno,byłybycałkowiciezbędne.
Terazjednakzajmiemysięprzystosowaniemoknadowyświetlaniagrafiki3Dza
pomocąOpenGL.StworzymynatepotrzebywplikuOknoGL.hklasęCOknoGLdzie-
dziczącązklasyCOkno:
Listing1.11.KlasaCOknoGLodpowiedzialnabędziezawspółpracęoknazbiblioteką
OpenGL
classCOknoGL:publicCOkno
{
private:
HGLRCuchwytRC;//uchwytkonteksturenderingu
HDCuchwytDC;//uchwytprywatnegokontekstuurządzeniaGDI
public:
COknoGL():COkno(),uchwytRC(NULL),uchwytDC(NULL){};
}okno;
PonieważterazbędziemytworzyćobiektoknotypuCOknoGL,należyusunąćde-
klaracjętegoobiektuznajdującąsięzaklasąCOkno(zob.listing1.3).
Mimonazwyzawierającejprzyrostek„GL”narazienadalniebędziemykorzystać
zfunkcjiOpenGL;zawspółpracęWinAPIiOpenGLodpowiedzialnyjestbowiem