Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
}
NowoczesnyOpenGL
renderowanianiepowiodłosię",
"AplikacjaOpenGL",
MB_OK|MB_ICONERROR);
returnEXIT_FAILURE;
}
break;
caseWM_DESTROY://Zamknięcieokna
UsuńWGL();
break;
returnwynik;
}
InformacjeoużywanejwersjiOpenGLikarciegraficznej
Poutworzeniuiaktywowaniukonteksturenderowaniamożemyjużkorzystać
zfunkcjiOpenGL.Zanimjednakużyjemygodorysowaniascenyiaktorów,
sprawdźmy,czywszystkojestwporządku,wyświetlającwersjęOpenGLiinfor-
macjeourządzeniuużywanymdorenderowania(listing1.17).Ichprawidłowe
wyświetleniebędziedlanasinformacją,żekontekstrenderowaniazostałpopraw-
nieutworzony.
Listing1.17.WersjadostępnegoOpenGLtoważnainformacjadlaprogramisty
graki3D
voidOknoGL::UmieśćInformacjeNaPaskuTytułu(HWNDuchwytOkna)
{
charbufor[256];GetWindowText(uchwytOkna,bufor,256);
constGLubyte*wersja=glGetString(GL_VERSION);
strcat_s(bufor,"|OpenGL");strcat_s(bufor,(char*)wersja);
constGLubyte*dostawca=glGetString(GL_VENDOR);
strcat_s(bufor,"|");strcat_s(bufor,(char*)dostawca);
constGLubyte*kartaGraczna=glGetString(GL_RENDERER);
strcat_s(bufor,"|");strcat_s(bufor,(char*)kartaGraczna);
SetWindowText(uchwytOkna,bufor);
}
Niemapotrzebyzwalnianiapamięci,którązajmująłańcuchyzwracaneprzez
funkcjęglGetString.Taknaprawdęzwracaonabowiemstałełańcuchyopisu-
jącewłasnościkartygracznejiOpenGL,finastałe”zdeniowanewbibliotekach
OpenGL.
AbywidocznebyłytypyifunkcjeOpenGLibibliotekiGLU,wnaszymprzy-
padkutypGLubyteifunkcjaglGetString,dokoduźródłowegonależydołączyć