Glut könyvtár

A GLUT játékok módját úgy tervezték, hogy nagy teljesítményű megjelenítést biztosítson teljes képernyőn. Ebben a módban néhány GLUT funkció, például a felbukkanó menük és ablakok le vannak tiltva a teljesítmény növelése érdekében.
Az első dolog, amit meg kell tennünk, meg kell adnunk a játék mód paramétereit, vagyis a képernyő paramétereit. Ezek a paraméterek magukban foglalhatják a képernyő felbontását, a képpont mélységét és a frissítési gyakoriságot.
A beállítások formátuma a következő:

W - a képernyő szélessége képpontokban.
H - a képernyő magassága pixelben.
A Bpp a bitek száma pixelenként.
RR - függőleges szkennelés frekvenciája hertzben.

Mielőtt elmennénk, vegye figyelembe, hogy ezek a beállítások csak kérésre elérhetők a hardveren. Ha a megadott üzemmód nem áll rendelkezésre, a beállítások figyelmen kívül maradnak.

"800 × 600: 32 @ 100" - felbontás 800 × 600; színmélység (32 bit); 100Hz
"640 × 480: 16 @ 75" - a felbontás 640 × 480; színmélység (16 bit); 75Hz

Bár rendszerint világos képet kapunk a képernyő felbontásáról és az összes paraméterről, szerencsére nem kell mindet megadnunk. Elhagyhatunk néhány mezőt, és hagyjuk, hogy a GLUT kitöltse az üres helyeket. A sablon következő sorai a képernyőbeállítások érvényes részleges kijelzései:

A GLUT képes feldolgozni az összes kombinációt, amíg a köztük lévő sorrend megmarad. Például a színmélység előtt nem engedélyezett a frissítési gyakoriság.

Tegyük fel, hogy szeretnénk beállítani a képernyő felbontását, de nem érdekel a pixel mélysége vagy a frissítési gyakoriság, akkor írhatunk valami "800 × 600" -t.

Ha viszont a teljes felbontású módot szeretnénk beállítani a jelenlegi felbontásnál, de 32 bites színmélységgel írhatnánk: "32".

Ez a néhány példa nem mutatja a beállítási képernyő teljes sorának összes lehetőségét. A fenti sablonok egyikét használhatjuk.

Először is a GLUT-ot a teljes képernyős módra vonatkozó kért paramétereknek megfelelően kell beállítani. A GLUT funkció, amely beállítja a játék módot, glutGameModeString. A szintaxis a következő:

void glutGameModeString # 40; const char * karakterlánc # 41; ;

* A string a szükséges beállításokat tartalmazó karakterlánc.

A GLUT ellenőrzi a glutGameModeString argumentumot. Bár a függvény nem ad vissza hibakódot, ellenőrizhetjük, hogy az üzemmód a megfelelő sorrendben van-e megadva. A GLUT olyan funkciót biztosít, amely többek között lehetővé teszi számunkra, hogy ellenőrizzük, a megadott mód érvényes-e. Funkció szintaxisa:

int glutGameModeGet # 40; GLenum info # 41; ;

info - kért információk.

Annak ellenőrzésére, hogy a megadott üzemmód aktív-e, az információváltozó az előre definiált konstansok értékét veszi fel: GLUT_GAME_MODE_POSSIBLE.

Ebben az esetben a visszatérési érték azt jelzi, hogy a megadott üzemmód érvényes-e, a nem nulla érték jelzi a megadott üzemmód aktivitását. Feltéve, hogy visszatérési értékként nem nulla értéket kapunk, beléphetünk, vagy legalább megpróbálhatunk bejutni a játékmódba a glutEnterGameMode segítségével. Ez a funkció ténylegesen beállítja a kívánt beállítást, ha érvényesek. A szintaxis a következő:

void glutEnterGameMode # 40; űr # 41; ;

A GLUT 800 és 600 közötti felbontási beállításokkal történő futtatásának fő funkciója a következőképpen néz ki:

Az inicializáló funkciónak regisztrálnia kell az összes szükséges visszahívást, valamint végre kell hajtania az OpenGL szükséges inicializálását. Például írhatnánk a következőket:

Ez akkor lehet, ha a játékmódok és az ablakmód közötti váltást szeretnénk váltani az alkalmazás végrehajtása során. A következő kódrészlet feltételezi, hogy ablakos módban indulunk el. Ezután a felhasználó megnyomhatja az F1 billentyűt a játék módba való belépéshez. Az F6 visszaállítja a felhasználót az ablak módba. Ebben az esetben fő # 40; # 41; meg kell határoznia az ablak tulajdonságait, a regiszterfunkciókat és a visszahívásokat, és be kell írnia a fő hurokot.

Olyan függvény, amely a GLUT-nak elhagyja a játékmódot.

void glutLeaveGameMode # 40; űr # 41; ;

Olyan funkció, amely kezeli a speciális gombokat az üzemmódváltáshoz:

Van egy olyan apróság, ami nagyon fontos a fenti függvényben, amikor a glutEnterGameMode játékmódba lépünk, újra kell regisztrálni a visszahívásokat, és újradefiniálni kell az OpenGL kontextust. A játékmód egy új ablaknak felel meg, más OpenGL és GLUT beállításokkal. Ez azt jelenti, hogy a visszahívási funkciók ablak módban nem működnek játék módban. A visszahívási funkciók használatához újra be kell jelentkeznünk. Ezenkívül meg kell határozni az OpenGL inicializálását. Például az ablak módra létrehozott kijelzõlistákat újra meg kell határoznia, amikor belép a játékmódba.

A GLUT-nak van egy speciális funkciója a játék mód állapotparamétereinek lekérdezéséhez. glutGameModeGet. Ennek a funkciónak a szintaxisát a fentiekben definiáltuk, amikor megemlítettük, hogy az argumentum egyik lehetséges értéke GLUT_GAME_MODE_POSSIBLE volt.

Számos lehetőség van a glutGameModeGet argumentumra, amely lefedi a helyes játékprogramozási mód minden igényét. Az egyes esetek visszatérési értékei a következők:

GLUT_GAME_MODE_ACTIVE - Ha az alkalmazás fut játékmódban, akkor a glutGameModeGet visszatéríti a nem nulla értéket, ha ablakos üzemmódban nulla értéket ad vissza.
GLUT_GAME_MODE_POSSIBLE - Mint fentebb említettük, használhatjuk a játék mód beállításait meghatározó karakterláncot. Jó tónus a glutGameModeGetre hivatkozni ezzel az értékkel, mielőtt belépne a játékmódba.
GLUT_GAME_MODE_DISPLAY_CHANGED - Ahogy korábban említettük, a játékmódba való belépéskor nincs garancia arra, hogy a kijelzési mód valóban megváltozott. Ezzel az értékkel ellenőrizhető, hogy a játékmód ténylegesen be lett-e kapcsolva.
GLUT_GAME_MODE_WIDTH - visszaadja a képernyő szélességét.
GLUT_GAME_MODE_HEIGHT - visszaadja a képernyő magasságát.
GLUT_GAME_MODE_PIXEL_DEPTH - Visszaadja az aktuális üzemmódban lévő bitek színmélységét pixelenként.
A GLUT_GAME_MODE_REFRESH a tényleges frissítési gyakoriság a Hertzben.
Az utolsó négy lehetőségnek csak akkor van értelme, ha játék módban vagyunk. Ezek a beállítások akkor fogják hívni a glutGameModeGet-et -1-es értékkel, ha az utolsó sor, amely meghatározza a játék konfigurációs módját, nem működik akkor sem, ha már játékmódban vagyunk. Például, ha 640 x 480 felbontású és 640 x 480 felbontású futó alkalmazásból állunk, és 1600 x 1200-ra szeretnénk változtatni, és a mód nem egyezik meg a tényleges hardverkonfigurációkkal. akkor a GLUT nem fogja megváltoztatni a felbontást, és a játékmód 640-es 480-as felbontásban marad. Azonban, amikor megállapítja az aktuális magasságot. -1-et kapunk. nem 480, de a tényleges magasság 480.

A következő kód szemlélteti a glutGameModeGet használatát.


Glut könyvtár

Kapcsolódó cikkek