Ich möchte oben, unten, links, rechts als Teil der Steuerelemente einer OpenGL + Anwendung verwenden. Wie beziehe ich mich auf die Schlüssel innerhalb meiner 'keyboard
' Funktion (die ich an glutKeyboardFunc
übergebe)?Wie lege ich die Richtungstasten einer Tastatur im Überschwang fest?
5
A
Antwort
4
Sie benötigen glutSpecialFunc.
Zum Beispiel -
#include<GL/gl.h>
#include<GL/glut.h>
#include<stdio.h>
void
init(void)
{
/*initialize the x-y co-ordinate*/
glClearColor(0,0,0,0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-320, 319,-240, 239);
glClear (GL_COLOR_BUFFER_BIT);
glFlush();
}
void
catchKey(int key, int x, int y)
{
if(key == GLUT_KEY_LEFT)
printf("Left key is pressed\n");
else if(key == GLUT_KEY_RIGHT)
printf("Right key is pressed\n");
else if(key == GLUT_KEY_DOWN)
printf("Down key is pressed\n");
else if(key == GLUT_KEY_UP)
printf("Up key is pressed\n");
}
int
main(int argc, char *argv[])
{
double x_0, y_0, x_1, y_1;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(400, 400);
glutCreateWindow("Special key");
init();
glutSpecialFunc(catchKey);
glutMainLoop();
}
4
Ihre Funktionen etwas wie diese
void handleSpecialKeypress(int key, int x, int y) {
switch (key) {
case GLUT_KEY_LEFT:
isLeftKeyPressed = true;
if (!isRightKeyPressed) {
DO SOMETHING HERE;
}
break;
case GLUT_KEY_RIGHT:
isRightKeyPressed = true;
if (!isLeftKeyPressed) {
DO SOMETHING HERE;
}
break;
}
}
void handleSpecialKeyReleased(int key, int x, int y) {
switch (key) {
case GLUT_KEY_LEFT:
isLeftKeyPressed = false;
break;
case GLUT_KEY_RIGHT:
isRightKeyPressed = false;
break;
}
}
sein sollte, und Sie müssen auch diese in Ihrer main() Methode aufzurufen
glutSpecialFunc(handleSpecialKeypress);
glutSpecialUpFunc(handleSpecialKeyReleased);
- Die Variablen isRightK eyPressed und isLeftKeyPressed sind globale Variablen, die ich definiert habe.
Verwandte Themen
- 1. Wie lege ich die erste Seite im PDF-Dokument fest?
- 2. Wie lege ich den ersten Responder fest?
- 3. Wie lege ich die Codierung einer SPSS-Syntaxdatei fest?
- 4. Wie lege ich die relative Position einer Schaltfläche fest?
- 5. Wie lege ich die Schriftgröße in einer Garnelentabelle fest?
- 6. Wie lege ich die Höhe einer untergeordneten Komponente fest?
- 7. Wie lege ich die Hintergrundfarbe des Bearbeitungszubehörs einer Tabellenansicht fest?
- 8. Wie lege ich ein Google-Suchergebnisfenster fest?
- 9. Wie lege ich den Wert XamDateTimeEditor fest?
- 10. Wie lege ich die Transaktionsisolationsstufe in SQLAlchemy für PostgreSQL fest?
- 11. Wie lege ich eine Rückwärtsauswahl fest?
- 12. Wie lege ich die Standardeinstellungen (Sprache & Tastatur) für ein Android AVD (SDK 2.1 & 2.2) fest
- 13. Wie lege ich eine Dateierweiterung fest?
- 14. Wie lege ich Titel für UIBarButtonItem fest?
- 15. Wie lege ich eine bedingte Kompiliervariable fest?
- 16. Wie lege ich den li Stil fest?
- 17. Wie lege ich die Farbe eines NSButtonCell-Textlabels fest?
- 18. Wie lege ich die Adresse eines Outlook-Internet-Kalenderordners fest?
- 19. Wie lege ich die Zeitauflösung in Cocotb fest?
- 20. Wie lege ich den Basisreference einer Seite in Javascript fest?
- 21. Wie lege ich den visuellen Status einer Textbox fest?
- 22. Wie lege ich die Build-Nummer in Teamcity fest?
- 23. Wie lege ich die Schrifthöhe in verschiedenen Ausrichtungen fest?
- 24. Wie lege ich die Android-API-Stufe in PhoneGap fest?
- 25. Wie lege ich die Zieleigenschaft auf einem Etikett fest?
- 26. Wie lege ich die Option eclipse.ini -vm fest?
- 27. Wie lege ich die Hintergrundfarbe eines HTML-Frames fest?
- 28. Wie lege ich die Größe eines HTML-Textfelds fest?
- 29. Wie lege ich die Visual Studio Installer-Bedingungen fest?
- 30. Wie lege ich die Bezeichnung für JTextField fest?