我的 SDL2 应用程序仅在第一次键盘输入后出现严重延迟
My SDL2 apps have a severe delay ONLY after the first keyboard input
在我所有C++ SDL2 程序中,第一次键盘输入后会出现严重的延迟。在第一次输入之后,其他一切似乎都很好。
即使在最简陋的程序中也会发生这种情况。
是我做错了什么,还是这是一个错误?
如果相关,我的操作系统是 macOS。
这是一些有问题的代码:
#include <SDL2/SDL.h>
#include <iostream>
#include <stdexcept>
int main(int argc, char *argv[])
{
if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
throw std::runtime_error("SDL failed to initialize.n");
}
SDL_Window *window = SDL_CreateWindow("App", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, NULL);
bool done = false;
unsigned start_time = 0;
unsigned tick_time = 0;
while(!done)
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
if(event.type == SDL_QUIT)
{
done = true;
}
}
start_time = tick_time;
tick_time = SDL_GetTicks();
const unsigned delta_time = tick_time - start_time;
if(delta_time != 0)
{
if((1000 / delta_time) < 30)
{
std::cout << 1000 / delta_time << 'n';
}
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
我认为您应该使用 SDL_GetTicks(( 设置start_time,而不是在进入主循环之前将其设置为零。SDL_GetTicks(( 返回自 SDL_Init(( 以来的时间,此时它可能不是零。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何仅为一个函数添加延迟
- 如何使用用户输入在C++中正确填充2D数组
- 延迟 _getch() 输入
- 使用X时减少输入延迟
- STM32(使用Mbed在线)在较高模拟输入频率下显示延迟
- 我的 SDL2 应用程序仅在第一次键盘输入后出现严重延迟
- 在使用发送输入 API 模拟鼠标单击时是否需要引入延迟
- C++Qt继承QMessageBox以延迟用户输入,以防止意外操作
- 输入延迟与PortAudio回调和ASIO sdk
- 具有时间延迟的简单输入输出