gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:43 24 4
gpt4 key购买 nike

我正在设计应该在图像上展示开放式 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
}

这使得程序即使在后台也可以执行和渲染(或者如果一开始就不需要重新渲染)。如果我使用更长的延迟,我消耗的资源就会更少,但我必须等待更长的时间才能处理鼠标点击等事件。
我想要的是让程序等待事件,就像 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 中的示例:

{
SDL_Event event;

while ( SDL_WaitEvent(&event) ) {
switch (event.type) {
...
...
}
}
}

关于c++ - 防止SDL程序消耗额外资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com