GL/GLUT Tastatureingaben verzögert
-
Hi,
ich hab da dieses recht simple Programm, dass mit Glut ein Dreieck auf den Bildschirm zeichnet. Beim drücken auf Links-Rechts solle es sich drehen. Mein Problem ist nun, dass die Eingabe verzögert behandelt wird. Heisst ich drücke die Taste und es dauert etwa 1-2 Sekunden, bis das Programm reagiert. Weiß jemand Rat?
Hier hatte jemand das gleiche Problem:
http://lists.kde.org/?l=kde-games-devel&m=107773675017835&w=2Das ganze läuft bei mir logischerweise unter X11 (oder besser X.org)
#include <GL/glut.h> #include <stdlib.h> float angle=0.0; void renderScene(void); void processSpecialKeys(int key, int x, int y); int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowPosition(100,100); glutInitWindowSize(320,200); glutCreateWindow("3D Tech- GLUT Tutorial"); glutIdleFunc(renderScene); glutSpecialFunc(processSpecialKeys); glEnable(GL_DEPTH_TEST); glutMainLoop(); return 0; } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glRotatef(angle,0.0,1.0,0.0); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glPopMatrix(); glutSwapBuffers(); } void processSpecialKeys(int key, int x, int y) { switch(key) { case GLUT_KEY_LEFT: printf("++\n"); angle++; break; case GLUT_KEY_RIGHT: printf("--\n"); angle--; break; default: break; } }
Edit:
Das ganze läuft flüssig, wenn ich die Idle-Funktion entferne. Was soll ich mit der Idle-Funktion, wenn die alles stört!! Gibts da Abhilfe?