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

Nic*_*cko 17 c++ opengl sdl fullscreen alt-tab

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

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

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

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

有任何想法吗?

Edu*_*sta 1

当全屏应用程序失去焦点时,“减慢”速度是一个很好的做法。两个原因:

  1. 用户可能需要按 Alt-Tab 并执行一些重要操作(例如关闭占用资源的繁重应用程序)。当他切换时,新应用程序将获得控制权,并且操作系统必须根据需要从您的应用程序中释放资源
  2. 现代操作系统使用大量 GPU - 这意味着它需要释放一些图形内存才能工作。

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

编辑:s/SO/OS/g