我使用SDL制作了一个非常基础的窗口,想让它一直运行,直到我按下窗口上的X。
#include "SDL.h"
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char **argv)
{
SDL_Init( SDL_INIT_VIDEO );
SDL_Surface* screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, 0,
SDL_HWSURFACE | SDL_DOUBLEBUF );
SDL_WM_SetCaption( "SDL Test", 0 );
SDL_Event event;
bool quit = false;
while (quit != false)
{
if (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
quit = true;
}
}
SDL_Delay(80);
}
SDL_Quit();
return 0;
}
我尝试在while循环的结尾处添加SDL_Delay()
,它的效果还不错。
然而,似乎80毫秒是我能够使用的最大值,以保持程序的平稳运行,即使这样,CPU的使用率也大约为15-20%。
这是最好的方法吗?我是否必须接受它已经在这个点上占用了这么多的CPU呢?
SDL_PushEvent
和SDL_AddTimer
,那为什么不使用多线程呢? - dypSDL_Delay
)不是一个好的解决方案--同步还有什么用?我能想到的唯一情况是你不想无限期地睡眠是定期任务。你可以使用另一个线程甚至SDL_AddTimer
来完成这个任务。 - dyp