gpt4 book ai didi

c - glutTimerFunc() 不限制帧率

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:57 25 4
gpt4 key购买 nike

glutTimerFunc 不会延迟它只是永远循环。像fxp。 while(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();
}

别担心其他功能是干净的:)
该代码之前可以工作,但我不知道为什么现在不工作了。

最佳答案

你的 mainloop 应该被称为 init。它所做的只是设置过剩回调。与其在空闲函数中调用 glutPostRedisplay,不如在 timer 函数中调用它。换句话说,不要调用 glutIdleFunc(timer);。相反,您自己调用一次 timer() 并让它为自己添加一个计时器 glutTimerFunc (30 , timer, 0);

但是,我建议您自己为帧限制器计时,因为这样会更加准确。我写了this answer正是为了这个。

关于c - glutTimerFunc() 不限制帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com