SDL 中的真正全屏

Posted

技术标签:

【中文标题】SDL 中的真正全屏【英文标题】:True fullscreen in SDL 【发布时间】:2012-06-10 05:11:21 【问题描述】:

将 C++ 与 SDL 一起用于图形,我想知道全屏使用情况。当我调用 SDL_SetVideoMode 时使用 SDL_FULLSCREEN 标志可以很好地使其全屏显示,但如果选择的分辨率小于系统的分辨率,则所有内容周围都会有黑色边框。如何使图像拉伸为真正的全屏?

【问题讨论】:

这是您的显示器或图形驱动程序的属性,而不是您的应用程序。 但是其他的全屏应用其实都是全屏的;为什么 SDL 不同? SDL 文档说:“SDL 将尝试使用全屏模式。如果无法更改硬件分辨率(无论出于何种原因),将使用下一个更高的分辨率并且显示窗口居中黑色背景。”因此,也许您的卡不支持它,或者如果您正在使用它,则可能是 OGL 驱动程序。尝试枚举所有支持的显示模式,并确保您尝试使用的显示模式有效。 【参考方案1】:

尝试将 SDL_SWSURFACE 标志添加到 SDL_SetVideoMode 调用。

您使用的是哪个操作系统?

【讨论】:

我使用的是 SDL_SWSURFACE|SDL_FULLSCREEN,虽然 SDL_SWSURFACE 被定义为 0,所以它实际上并没有做任何事情,只是给自己做个注释。我正在使用 Ubuntu,但它在 Windows 7 上是虚拟盒(除非我通过 Windows 封装它,否则我的网络将无法在 Linux 上运行)。我不确定这个问题是否是由于我奇怪的设置造成的。其他人的 SDL_FULLSCREEN 是否适合他们?我完全可以接受它在一个奇怪的设置上很奇怪,只要它可以在普通用户机器上正常工作。 那么 SDL_HWSURFACE 怎么样?虽然,虚拟盒子做了一些有趣的把戏。您是否尝试过在 VirtualBox 本身中激活全屏模式,然后重新启动,当虚拟机从一开始就以全屏模式恢复时,尝试运行您的应用程序。 嗯,我尝试在重新启动后立即使用 HW 和 SWSURFACE 运行它,但没有骰子。鉴于这里的每个人都表示支持正确的全屏功能,我假设这是我的 virtualbox 设置中的一个问题,希望不表示任何错误的 SDL 设置。 在花了很长时间试图弄清楚交叉编译之后,我成功地将它移植到了 Windows 7,并且全屏工作就在那里。所以,虚拟盒子玩得很有趣的猜测似乎是正确的。 virtualbox中的“切换到缩放模式”

以上是关于SDL 中的真正全屏的主要内容,如果未能解决你的问题,请参考以下文章

C ++ glfw3:全屏模式下的一个(两个)窗口不是真正的全屏(Mac Os)

android 关闭底部的菜单,实现真正全屏

如何将应用程序定义的消息发送到 SDL 中的事件循环?

使用 openGL 在 SDL2 中全屏显示窗口

SDL 物理键码和 SDL 虚拟键码有啥区别?

链接问题 C++、glew 和 SDL