Ich finde den fehler nicht!
-
Achso, wenn möglich, poste mal den gesamten code, dann geh ich auf fehlersuche ^^
-
#include <windows.h> #include <GL\glut.h> #include <iostream.h> /* D E C L A R E =============== Variablendeklarination */ #define LENGTH_OF_MOVE 0.1f char buffer[12]; float move = 0.0f; /* K E Y _ D O W N =============== Testen ob Taste gedrückt ist */ void key_down(unsigned char key, int x, int y) { buffer[key]=1; } void key_up(unsigned char key, int x, int y) { buffer[key]=0; } /* I N I T =============== Initialisierungsfunktion */ void init() { glClearColor(0,0,0,0); glColor3f(1,1,1); glEnable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glMatrixMode(GL_MODELVIEW); } /* I D L E =============== Auswertung der Tasten die gedrückt wurden */ void idle() { if(buffer[27]) { exit(0); } if(buffer[75]) { move = (move - 0.1f); } if(buffer[77]) { move = (move + 0.1f); } glutPostRedisplay(); } /* D I S P L A Y =============== Ausgabefunktion der Primitiven usw. Renderer Funktion */ void display() { glLoadIdentity(); glPopMatrix(); glTranslatef(move,0.0f,0.0f); //cout << move << endl; glBegin(GL_POLYGON); glVertex3f(-0.09f,-0.10f, 0.00f); glVertex3f(-0.06f, 0.05f, 0.00f); glVertex3f(-0.04f, 0.02f, 0.00f); glVertex3f(-0.02f, 0.07f, 0.00f); glVertex3f( 0.00f, 0.08f, 0.00f); glVertex3f( 0.02f, 0.07f, 0.00f); glVertex3f( 0.04f, 0.02f, 0.00f); glVertex3f( 0.06f, 0.05f, 0.00f); glVertex3f( 0.09f,-0.10f, 0.00f); glVertex3f( 0.04f,-0.10f, 0.00f); glVertex3f( 0.00f,-0.07f, 0.00f); glVertex3f(-0.04f,-0.10f, 0.00f); glEnd(); glPushMatrix(); glFlush(); glutSwapBuffers(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //move = 0.0f; } /* M A I N =============== Hauptfunktion des Programmes, Haupteintrittspunkt von hier werden alle Prozesse gesteuert */ int main(int argc, char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutGameModeString("800x600:16@75"); glutInitWindowSize(500,500); glutInitWindowPosition(0,0); glutCreateWindow("Leis - FENSTER"); glutFullScreen(); init(); glutIdleFunc(idle); glutDisplayFunc(display); glutKeyboardFunc(key_down); glutKeyboardUpFunc(key_up); glutMainLoop(); return 0; }
-
Buffer geht nur bis 11 und nicht bis 77.
-
hab den Puffer auf 100 geändert es klappt immer noch nicht
-
wo wird denn die idle() funktion aufgerufen?
-
cpt.oneeye schrieb:
}
wo wird denn die idle() funktion aufgerufen?eXpEdItIoN-gEfOrCe!! schrieb:
glutIdleFunc(idle);
als callback hier
-
Wenn du sagst, das das Raumschiff nach einem cout sofort nach rechts verschwindet, kanns eigentlich nur ne falsche Verlinkung des input-output sein
und ändere den buffer auf 255
-
hmmm.. anscheinend mag mich opengl nicht so
-
ich hab jetzt das ganze mal in linux gemacht, die variable move hat trotz der betätigen der Pfeiltasten den Wert 0.000000!
-
gib es dir mal aus wenn du Keydown und Keyup events hast.
[edit] wo ist die stelle an der du "buffer" initialisierst?
du hast geschrieben dass das gezeichnete einmal ganz schnell wegbewegt wurde, wäre möglich dass das der grund ist... [/edit]
rapso->greets();
-
ich hab jetzt mal ausgeben lassen wenn es die bedingung für die tasten erfüllt, ich kam zu den ergebnis dass die Tastencodes 77 und 75 irgendwie nicht funktionieren ?????!!! ich hab das ganze mal mit 8 (backspace) und 13 (return) gemacht jetzt funktionierts?????!!
komisch oder?? und jetzt? *g*
ps: im konqueror kann ich die smilies nicht anklicken!
edit:
ganz oben:char buffer[255];
-
müßtest du das nicht mut 0 initialisieren?
naja, gut dass es läuft, konnte dann wenigstens nen debuggingtip liefern
rapso->greets();
-
rapso schrieb:
müßtest du das nicht mut 0 initialisieren?
naja, gut dass es läuft, konnte dann wenigstens nen debuggingtip liefern
rapso->greets();
jap, danke
weis nun jemand wie ich das mit den pfeiltasten hinbekomme?
im Assembler-Buch stehen folgende Scancodes:
Return - 13
ESC - 27
TAB - 9
BACKSPACE - 8
PFEILTASTE OBEN - 0;72
PFEILTASTE LINKS - 0;75
PFEILTASTE RECHTS - 0;77
PFEILTASTE UNTEN - 0;80
POS 1 - 0;71
... uswgenau bei den Tasten, bei den es nicht funtzt steht so ein 0; davor, hat das (was seeeeehr warscheinlich ist) damit zu tun?
Danke und Grüße
EGF
-
Lass dir doch einfach mal die Codes ausgeben, die wirklich registriert werden, und benutze nicht welche, die du irgendwo (falsch) abgelesen hast.
@rapso:
Globale Variabeln werden doch initialisiert.
-
eXpEdItIoN-gEfOrCe schrieb:
PFEILTASTE OBEN - 0;72
PFEILTASTE LINKS - 0;75
PFEILTASTE RECHTS - 0;77
PFEILTASTE UNTEN - 0;80
POS 1 - 0;71Das ist für Assembler. mehrbytige Scancodes und ähnliches wird von den meisten höhersprachlichen Input-Bibliotheken gewrappt.
schau mal bei GLut in der Doku unter folgendem Stichpunkt nach
:
glutSpecialFunc