c – 防止SDL程序消耗额外资源

前端之家收集整理的这篇文章主要介绍了c – 防止SDL程序消耗额外资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在设计应该在图像上显示开放CV的程序.我注意到基本SDL应用程序的概念非常糟糕 – 它由循环和延迟组成.
  1. while(true) {
  2. while(event_is_in_buffer(event)) {
  3. process_event(event);
  4. }
  5. do_some_other_stuff();
  6. do_some_delay(100); //Program is stuck here,unable to respond to user input
  7. }

这使得程序即使在背景上也可以执行和渲染(或者如果首先不需要重新渲染).如果我使用更长的延迟,我获得的资源消耗更少,但我必须等待更长时间才能处理事件,如鼠标点击.
我想要的是使程序等待事件,如WinApi或类似套接字请求.
那可能吗?
我想要的概念:

  1. bool go=true;
  2. while(get_event(event)&&go) { //Program gets stuck here if no events happen
  3. switch(event.type){
  4. case QUIT: go=false;
  5. }
  6. }

解决方法

您可以使用SDL_WaitEvent(SDL_Event * event)等待SDL中的事件.它将比您目前拥有的轮询循环设计使用更少的资源.请参阅此 doc中的示例:
  1. {
  2. SDL_Event event;
  3.  
  4. while ( SDL_WaitEvent(&event) ) {
  5. switch (event.type) {
  6. ...
  7. ...
  8. }
  9. }
  10. }

猜你在找的C&C++相关文章