防止SDL程序消耗额外资源

2024-03-18

我正在设计应该在图像上展示开放简历的程序。我注意到基本 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(使用前将#替换为@)

防止SDL程序消耗额外资源 的相关文章

随机推荐

  • d3.js:放大点击事件

    我试图得到同样的行为威尔林森的实施 http bl ocks org linssen 7352810但在 d3 js 版本 4 上 我对版本 4 中的 Zoom api 感到很困惑 我在原始实现中所做的更改是 zoom translate
  • 用于分隔 Excel 工作表的多个数据框列表

    我有一个可变长度的数据框列表 我想将每个数据框列表转换为每个 Excel 工作表 这是我的代码 for i in range 1 len dfs frames sheetName i dfs i for sheet df in frames
  • AlertDialog 不显示列表上的分隔线

    我有这门课 public class PageDetailInfoView extends FrameLayout few constructors and methods method to show an AlertDialog wit
  • GradleWorkerMain 内存不足错误

    我正在尝试对基于 ant 的 Netbeans RCP 项目进行 gradle 并发现奇怪的 gradle 行为 我用探查器进行了一些观察并得到了下一个结果 环境配置 Gradle 1 9 Build time 2013 11 19 08
  • include_directories 用于导入库

    我正在用 c 编写项目 并且在 cmake 中导入库时遇到问题 正在导入的第三方库不会传播包含目录 根目录 CMakeLists txt Top level CMakeLists txt cmake minimum required VER
  • OpenMp 根据变量设置并行循环的线程数

    有没有办法根据变量的值设置 OpenMP 并行区域的线程数 最初 整个应用程序的线程数 nofCores 在我的 AMD FX 8350 上 nofCores 8 对于这个区域 如果变量是 3 那么我只需要 3 个线程 如果变量 gt 核心
  • Twitter“无法验证您的身份”错误

    我正在使用 Rails 应用程序的 twitter gem 这样我就可以将我的博客文章自动更新到我的 twitter feed 上 我跟着gem 自述文件说明 https github com sferik twitter 将其放入 con
  • 有什么方法可以从内部函数中退出外部函数吗?

    在 PHP 中 如果我有一个函数调用另一个函数 有没有办法让被调用函数退出调用者函数而不杀死整个脚本 例如 假设我有一些类似的代码 p This is some text After this text I m going to call
  • 如何在seaborn catplot中旋转xticklabel

    我无法在 Seaborn Matplotlib 中旋转我的 xlabel 我尝试了很多不同的解决方案 但无法修复它 我在 stackoverflow 上看到了很多相关问题 但它们对我不起作用 我当前的绘图如下所示 但我希望 xlabel 旋
  • Django 检查查询集模型类型的最佳方法

    我有一个 Django 操作函数 我想在基于不同模型的查询集上使用它 检查我的查询集组成的模型类型的最佳方法是什么 假设我想检查 models py 中定义的 Library 类 目前我可以使用它来工作 for object in quer
  • 使用 CreateEvent 创建/打开已存在的事件是否会重置信号?

    如果我使用 CreateEvent 打开一个事件 responseWaitEvent CreateEvent NULL no security TRUE manual reset event FALSE not signaled LPTST
  • 将成员添加到 MailChimp 列表时出现 400 错误请求

    我正在发送一个POST请求以下资源 http developer mailchimp com documentation mailchimp reference lists members 并得到 400 我明白错误意味着什么 http d
  • 如何在标题中仅保留唯一值并在不同行中获取与这些值相对应的值?

    我有一个链接 在该链接中我有一些产品 每个产品中都有一个规格表 该表的第一列应为标题 第二列应为与其对应的数据 每个表的第一列都不同 有一些重叠的类别 我想要一张大表 其中包含所有这些类别 并且按行排列不同的产品 我能够获取一张表 一种产品
  • Android 使用 AccountManager 添加帐户

    大家好 我正在尝试使用 androids accountManager 添加帐户 我不断收到下面的堆栈跟踪 伙计们 我无法发布我的所有代码 因为我打破了 Stack Overflow 允许我输入的限制 因此 我只会发布您请求的代码片段 因为
  • 通过 ASP.NET Web API 有效使用 async/await

    我正在尝试利用async await我的 Web API 项目中的 ASP NET 功能 我不太确定它是否会对我的 Web API 服务的性能产生任何影响 请在下面找到我的应用程序的工作流程和示例代码 工作流程 UI应用程序 Web API
  • 组件的松耦合

    我创建了一个提供消息 电子邮件和短信的类库 程序集 该类库定义了一个接口 IMessenger EmailMessage 和 SmsMessage 类都实现了该接口 我认为这是一个通用库 它将成为我的基础设施层的一部分 并且可以 可以在任何
  • 微软机器人框架自行崩溃[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到这个令牌请求 error invalid request error description AADSTS90002 No
  • VS 代码评论面板

    我正在看 comments openPanel openOnSessionStartWithComments 在 VS Code 中设置 但我不太明白这是如何工作的 我在 Google 或 StackOverflow 上找不到任何关于此的信
  • 配置对象无效。 Webpack 已使用与 API 架构不匹配的配置对象进行初始化

    我有一个从在线课程创建的简单的 helloworld React 应用程序 但是我收到此错误 配置对象无效 Webpack 已使用初始化 配置对象与 API 架构不匹配 配置有一个未知属性 postcss 这些属性有效 object amd
  • 防止SDL程序消耗额外资源

    我正在设计应该在图像上展示开放简历的程序 我注意到基本 SDL 应用程序的概念非常糟糕 它由循环和延迟组成 while true while event is in buffer event process event event do s