【问题标题】:Proper fullscreen resizing windows and linux C++正确的全屏调整 windows 和 linux C++
【发布时间】:2014-04-01 03:25:08
【问题描述】:

我正在为我正在编写的引擎使用 win32 API 和 x11。它是一个游戏引擎,当然它需要能够以最佳分辨率创建全屏窗口。目前,我设法在 Windows 上做到这一点,但我在其他计算机上尝试过,似乎有时窗口在监视器之外开始或在它之外结束,所以我的方法是不可靠的。我所做的是将分辨率更改为我之前选择的某个受支持的分辨率(全部在 C++ 中以编程方式完成),这在我的开发计算机上运行良好,但不一定在其他计算机上运行。在我见过的许多游戏中,都会自动选择最佳分辨率。这是怎么发生的? windows中是否有特殊功能可以选择最佳游戏分辨率?我不知道我应该如何处理这个问题。 linux 也是如此,我什么都没有。有人可以告诉我如何使用 x11/xfree86 或 sth 创建全屏窗口吗?我知道标题但不知道代码。感谢您的宝贵时间。

顺便说一句,我曾经通过获取桌面分辨率尺寸并将窗口大小调整为这些尺寸来创建全屏窗口,这非常有效且可靠。然而,大多数游戏(甚至像 bf4 这样的专业游戏)总是在开始游戏之前更改分辨率。这有什么原因吗?也许是性能(缓冲区大小?)?

【问题讨论】:

  • @πάνταῥεῖ 包括一个函数的完整 API 是一个真正的矫枉过正。您应该在以这种方式发表评论之前阅读问题。真的。
  • @PawełStawarz 至少我提到我没有读过它,为什么......
  • 好的,我明白了,感谢您理解我,但请其他人注意:我不想为我的引擎使用 Qt 或 GTK 或类似的东西。
  • @πάνταῥεῖ 这不会让你的评论变得更好。我希望一个有这种声誉的人知道如何对待那些提出他们真正考虑过和研究过的问题的人。
  • @PawełStawarz 1. 格式化和突出重点对于判断问题质量很重要 2. OP 在他们的问题中没有说明使用适当的 GUI 框架不是一个选项 3. 我提出了一个建议:可能想要说真的,我不明白我的评论有什么问题,这就是 SE 功能的目的。

标签: c++ winapi fullscreen x11


【解决方案1】:

如果你说的是“真正的”全屏,比如《战地风云》和《使命召唤》等流行的 PC 游戏,那么你必须首先了解这些类型的游戏不仅仅使用足够大的窗口来覆盖视口。使用“真实”全屏,分辨率也可能会改变可用的颜色数量以满足您的需求 - 它实际上占据了整个视口和屏幕,并且不与常规 Windows UI 交互。

Windows tutorial using DirectX for "real" fullscreen

Linux tutorial using OpenGL GLUT for "real" fullscreen

【讨论】:

  • 哦,我应该更清楚一点:我曾经做“假”全屏,但现在我确实改变了它(我使用 OpenGL btw),正如我在问题中所说的那样。问题是这个真正的全屏在不同的电脑上会有意想不到的效果,所以我的问题是还有更多的事情需要担心吗?我是否需要担心显示器位置等?我在某处读到监视器不一定从 (0,0) 开始
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
相关资源
最近更新 更多