无法限制 FPS OpenGL 和 C



我正在用C编写我自己的OpenGL和Win32库,并且我正在实现一个限制FPS的函数。要做到这一点,我首先要写一些代码来检查它是否有效,然后我会在稍后将其抽象为函数。我不知道缺了什么,但它不起作用。这是我的当前代码和输出

#include "2DM.h"
#include <time.h>
int main(void) {
WINDOW window = createWindow("WINDOW", 500, 500, WINDOW_NORMAL);
const int FPS_LIMIT = 60;
int initialTime = time(NULL), finalTime, frameCount = 0;

while(window.open) {
if(pollEvents(&window) {
/*
* Events handling
* .........
*/
}
/*
* OpenGL code
* .........
*/
display(&window);
frameCount ++;
finalTime = time(NULL);
int ellapsedTime = finalTime - initialTime;
if(ellapsedTime) {
int fps = frameCount / ellapsedTime;
int sleepMs = (1000 / FPS_LIMIT) - ellapsedTime;
printf("FPS: %inMS to Sleep: %in", fps, sleepMs);
frameCount = 0;
initialTime = finalTime;
Sleep(sleepMs);
}
}
}

我得到的输出是:FPS:

FPS: 5749
MS to Sleep: 15

time()以整数秒为单位返回时间,这对您尝试执行的操作无效。

例如,目前你每秒钟左右只进入if一次。sleepMs也是错误的,因为你减去了不同的单位。

相关内容

  • 没有找到相关文章

最新更新