Nybörjarguide till OpenGL: Bygg din egen CAD-program (9 / 14 steg)
Steg 9: Att bygga: rotera kuben
Obs: jag uppdaterat min Fönstren 10 PC innan du skriver det steget, det är därför den övre balken av min app är gröna på grund av mitt temafärg (som är grön). Så det finns inga ytterligare ändringar jag gjort, det är bara windows OS gör sin sak.
Om du vill rotera våra kub, behöver vi två saker.
1) först en funktion att uppdatera rotation när vi trycker våra nycklar.
2) matriser att rotera våra kub.
Följande funktion är ansvarig för att kontrollera händelserna tangenttryckning och uppdatera rotation och skalning variabler
För det första: jag definierade en variabel
CONST Uint8 * nycklar = NULL;
Det liknar begreppet en array, men generellt är det en datastruktur att lagra data som en kedja av element.
Nästa som i (1) fylla jag nyckelvariabel med nyckel händelser som inträffar i varje iteration via SDL_GetKeyBoardState(NULL);
Se, super enkelt. Nu i (2) kallar jag den funktion checkKeys(),
Kontrollera vilken tangent är nedtryckt är super lätt i SDL, har inbyggda makron definiera vad nyckeln trycks.
Som definierar i (1) SDL_SCANCODE_ESCAPE på ESC
Källa: www.ComputerHope.com
Bildkälla:
På samma sätt i (2) och (3).
Nu i (2) har jag definierat alla variabler (som är float btw) för att definiera rotation. När trycker på piltangenterna, är de ökas/minskas därmed.
GLfloat cubeRotateX = 0.0f;
GLfloat cubeRotateY = 0.0f;
Jag har definierat variabler ansvara för skalning i (3) .
GLfloat ScaleFactor = 1.0f;
Nu returnerar funktionen checkKeys() true om exit villkoret är framgångsrik och falska om exit villkoret inte är uppfyllt ännu.
Då följaktligen i den om villkoret i while loop, gjort variabeln ändras. Som ni förmodligen vet vid det här laget gjort variabeln styr exit skick av app. om = 1; while loopen avslutas och programmet avslutas.