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

时间:2011-06-25 06:23:52

标签: c++ opengl sdl fullscreen alt-tab

我正在使用SDL 1.2.14和随附的OpenGL绑定编写C ++游戏。

然而,如果游戏是全屏的并且我 Alt - Tab 然后再回到游戏中,结果是不可预测的。游戏逻辑仍在运行。但是,渲染停止。我只看到在Alt-tab

之前绘制的游戏的最后一帧

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 用户可能需要使用Alt-Tab并执行一些重要操作(例如关闭占用资源的繁重应用程序)。切换时,新应用程序将获得控制权,操作系统必须根据需要从您的应用程序中释放资源
  2. 现代操作系统使用大量GPU - 这意味着它需要释放一些图形内存才能工作。
  3. 尝试关闭APPACTIVE = 0时使用的每个GL资源,并在APPACTIVE = 1上再次分配它们。如果这解决了,那就是“你的错”。如果它没有解决,那就是SDL(或GL或OS)错误。

    编辑:s / SO / OS / g