c – 防止SDL程序消耗额外资源
发布时间:2020-12-16 03:44:30 所属栏目:百科 来源:网络整理
导读:我正在设计应该在图像上显示开放CV的程序.我注意到基本SDL应用程序的概念非常糟糕 – 它由循环和延迟组成. while(true) { while(event_is_in_buffer(event)) { process_event(event); } do_some_other_stuff(); do_some_delay(100); //Program is stuck here
我正在设计应该在图像上显示开放CV的程序.我注意到基本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 } 这使得程序即使在背景上也可以执行和渲染(或者如果首先不需要重新渲染).如果我使用更长的延迟,我获得的资源消耗更少,但我必须等待更长时间才能处理事件,如鼠标点击. 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中的示例:
{ SDL_Event event; while ( SDL_WaitEvent(&event) ) { switch (event.type) { ... ... } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |