首页 文章

全屏SDL OpenGL Alt-tab具有不可预测的结果

提问于
浏览
17

我正在使用SDL 1.2.14和其中包含的OpenGL绑定在C中编写游戏 .

但是,如果游戏是全屏的,我将Alt-Tab退出游戏,结果无法预测 . 游戏逻辑仍在运行 . 但是,渲染停止 . 我只看到在Alt-tab之前绘制的游戏的最后一帧

我已经确保重新初始化OpenGL上下文并在我收到 SDL_APPACTIVE = 1 事件时重新加载所有纹理,这似乎只适用于一个Alt - Tab,然后所有后续的Alt - Tabs将停止渲染(我已经确定了 SDL_APPACTIVE 每次正确处理并相应地设置上下文 . )

我猜测SDL在最小化我不知道的应用程序时会做些什么 .

有任何想法吗?

1 回答

  • 1

    当它失去焦点时,“减慢”全屏应用程序是一个很好的实践 . 两个原因:

    • 用户可能需要使用Alt-Tab并执行一些重要操作(例如关闭占用资源的繁重应用程序) . 切换时,新应用程序将获得控制权,操作系统必须根据需要从您的应用程序中释放资源

    • 现代操作系统使用了大量的GPU - 这意味着它需要释放一些图形内存才能工作 .

    尝试关闭APPACTIVE = 0时使用的每个GL资源,并在APPACTIVE = 1上再次分配它们 . 如果这解决了,那就是“你的错” . 如果它没有解决,那就是SDL(或GL或OS)错误 .

    编辑:s / SO / OS / g

相关问题