Stap 9: De bouw: de kubus draaien
Opmerking: Ik heb bijgewerkt mijn windows 10 PC voor het schrijven van de stap, dat is waarom de hoogste staaf van mijn app is groen vanwege mijn themakleur (die is groen). Dus er zijn geen extra veranderingen ik heb gemaakt, zijn enkel de Vensters OS doet haar ding.
Om onze kubus draaien, moeten we twee dingen.
1) eerst een functie voor het bijwerken van de rotatie als we onze toetsen indrukt.
2) matrices naar onze kubus draaien.
De volgende functie is verantwoordelijk voor het controleren van de indrukken van een toets gebeurtenissen en bijwerken van de rotatie en schaal van variabelen
Ten eerste: Ik heb een variabele gedefinieerd
Const Uint8 * sleutels = NULL;
Het is vergelijkbaar met het concept van een matrix, maar eigenlijk is het een gegevensstructuur voor het opslaan van gegevens als een keten van elementen.
Volgende vullen ik zoals in (1) belangrijke variabele met sleutel gebeurtenissen in elke iteratie via SDL_GetKeyBoardState(NULL);
Zie, super gemakkelijk. Nu in lid 2 bedoelde roep ik de functie checkKeys(),
Controleren welke toets is ingedrukt is super makkelijk in SDL, heeft ingebouwde macro's definiëren welke toets is ingedrukt.
Zoals definieert in (1) SDL_SCANCODE_ESCAPE de Esc -toets
Bron: www.ComputerHope.com
Afbeeldingsbron:
Ook in (2) en (3).
Ik heb nu in (2) alle variabelen (die float btw) gedefinieerd om te bepalen de rotatie. Wanneer de pijl-toetsen worden ingedrukt, zijn ze verhoogd/verlaagd dienovereenkomstig.
GLfloat cubeRotateX = 0.0f;
GLfloat cubeRotateY = 0.0f;
Ik heb de variabelen die verantwoordelijk zijn voor de schaal gedefinieerd in (3) .
GLfloat ScaleFactor = 1.0f;
Nu retourneert de functie checkKeys() de waarde true als de uitgangsvoorwaarde succesvol is en false als uitgangsvoorwaarde nog niet waar is.
Dan dienovereenkomstig in de als voorwaarde in de while lus, de variabele gedaan wordt gewijzigd. Zoals u waarschijnlijk onderhand weet, gedaan variabele bepaalt de toestand van de uitgang van de app. als = 1; de while lus wordt afgesloten en de toepassing wordt beëindigd.