我正在设计应该在图像上展示开放简历的程序。我注意到基本 SDL 应用程序的概念非常糟糕 - 它由循环和延迟组成。
while(true) {
while(event_is_in_buffer(event)) {
process_event(event);
}
do_some_other_stuff();
do_some_delay(100); //Program is stuck here, unable to respond to user input
}
这使得程序即使在后台也能执行和渲染(或者如果首先不需要重新渲染)。如果我使用更长的延迟,我消耗的资源会更少,但在处理事件(例如鼠标单击)之前我必须等待更长的时间。
我想要的是让程序等待事件,就像 WinApi 那样或像套接字请求那样。
那可能吗?
我想要的概念:
bool go=true;
while(get_event(event)&&go) { //Program gets stuck here if no events happen
switch(event.type){
case QUIT: go=false;
}
}
您可以使用SDL_WaitEvent(SDL_Event *event)
等待 SDL 中的事件。与您当前拥有的轮询循环设计相比,它将使用更少的资源。请参阅此中的示例doc http://www.libsdl.org/intro.en/usingevents.html:
{
SDL_Event event;
while ( SDL_WaitEvent(&event) ) {
switch (event.type) {
...
...
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)