SDL2似乎有一种奇怪的行为,我不认为SDL1.2有关于事件循环。当执行使用以下代码创建的程序时,会有一个额外的延迟,使其非常慢。
#include "SDL.h"
int main(int argc, char *argv[])
{
SDL_Event event;
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *wind = SDL_CreateWindow("test", 700, 100, 300, 300, 0);
while (1)
{
SDL_PollEvent(&event);
if (event.type == SDL_QUIT || event.key.keysym.sym == SDLK_ESCAPE)
break;
SDL_Delay(1000);
}
SDL_Quit();
return 0;
}
例如,当点击按钮" escape"时,程序关闭前需要4-5秒,而它应该不到1秒,因为延迟固定为1000ms。
在循环中使用printf
时,我注意到即使循环正常,我的输入也不会在一定时间之前被考虑。
为什么会有这样的延迟?