正确的全屏调整窗口和 linux C++的大小

Proper fullscreen resizing windows and linux C++

本文关键字:linux C++ 调整 窗口      更新时间:2023-10-16

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

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

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

使用 DirectX 实现"真正"全屏的 Windows 教程

使用 OpenGL GLUT 实现"真正"全屏的 Linux 教程