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
3.Rysowanieianimacjafiguribrył
Wartozauważyć,żewtrakcieprofesjonalnegoprzygotowywaniagierlubfilmówanimowanych
postacieniebudowanezapomocąwerteksówręczniewpisywanychdokodu.Używasiędo
tegospecjalnychprogramów(3DSMax,Maya,Blenderitp.),zapomocąktórychbudujesię
modele,anastępnietakprzygotowaneobiekty(zapisanewplikach)importujesiędoprogramu.
63
Wyodrębnianiemetodyużącejdobudowania
aktorów
PrzygotowującklasęCOknoGL,myślęowygodnymnarzędziu,któreuprościtwo-
rzenieprojektów,korzystajączgrafikiOpenGL.Chciałbym,abypowstałszablontakie-
goprojektu.Dysponującnim,programistamożeskupićsięnaswoichzadaniach,nie
dbającjużoszczegółydotycząceinicjacjioknairysowaniasceny.Wartozatemprzygo-
towaćwydzielonemiejsce,wktórymprogramistaumieszczaswójwłasnykodbez
narażaniananiebezpieczeństwotejczęściprojektu,któraodpowiedzialnajestzainicja-
cjęoknalubwyświetlaniesceny.WzwiązkuztymwyposażmyklasęCOknoGLwczystą
metodęwirtualnąRysujAktorow.Programista(np.Czytelnik)będziemusiałutworzyć
własnąklasępotomnąwzględemCOknoGL,wktórejzdefiniujewłasnąmetodęRysuj-
Aktorowiktórazawieraćbędziekododpowiedzialnyzarysowaniefigurnascenie.
1.ZdefiniujmywklasieCOknoGLczystąmetodęwirtualnąonazwieRysujAktorow
(listing3.1):
Listing3.1.PrzekształcamyklasęCOknoGLwklasęabstrakcyjną
classCOknoGL:publicCOkno
{
private:
HGLRCuchwytRC;//uchwytkonteksturenderingu
HDCuchwytDC;//uchwytprywatnegokontekstuurządzeniaGDI
boolUstalFormatPikseli(HDCuchwytDC)const;
boolInitWGL(HWNDuchwytOkna);
voidUsunWGL();
protected:
voidUstawienieSceny();
voidRysujScene();
virtualvoidRysujAktorow()=0;
public:
COknoGL():COkno(),uchwytRC(NULL),uchwytDC(NULL){};
LRESULTWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);
}okno;
2.PonieważklasaCOknoGLstałasięabstrakcyjna,niemożnatworzyćobiektów
będącychjejinstancjami.Usuńmyzatemdeklaracjęobiektuokno(zob.listing
powyżej).
3.ZmetodyCOknoGL::RysujSceneusuńmysekwencjępoleceńodpowiedzialnych
zarysowaniefigury,awichmiejscewstawmywywołaniemetodyRysujAktorow
(listing3.2).