*
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=2
Das 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?