glutTimerFunc没有延迟它只是永远循环。喜欢fxp。而(1)。 我有什么不对吗?或者是兼容性问题? 我正在使用带有gcc的arch linux x64。而且我有点混合了32位程序和64位程序 我正在尝试制作一个检查输入的程序,同时在延迟时间内不断更新帧 我的包括:
#include <GL/glut.h>
#include <GL/glu.h>
#include <stdio.h>
#include <string.h>
我的主要职能是:
void timer(void)
{
glutPostRedisplay();
glutTimerFunc ( 30 , mainloop , 0 );
}
int main() {
loadconfiguration();
char *myargv [1];
int myargc=1;
myargv [0]=strdup ("./file");
glutInit(&myargc, myargv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(100, 100);
glutInitWindowSize(displayx, displayy);
printf("Making a window\n");
winIDMain = glutCreateWindow("GL Game");
mainloop();
}
void mainloop(void){
Initilize();
glutSetWindow (winIDMain);
glutDisplayFunc (render);
glutReshapeFunc (reshape);
glutKeyboardFunc (keyboard);
glutMouseFunc (mouse);
glutIdleFunc (timer);
glutMainLoop();
}
不要担心其他功能是否干净:) 答案 0 :(得分:2)
您的mainloop
应该被称为init
。所有这一切都是设置过剩的回调。您应该在glutPostRedisplay
函数中调用它,而不是在空闲函数中调用timer
。换句话说,请勿致电glutIdleFunc(timer);
。相反,请自己调用timer()
并让它为自己添加一个计时器glutTimerFunc (30 , timer, 0);
。
但是,我建议你自己做一个帧限制器的时间,因为它会更准确。我准确地写了this answer。