【问题标题】:Whats the difference between a full screen form and a video game?全屏形式和视频游戏有什么区别?
【发布时间】:2014-12-17 19:18:47
【问题描述】:

如果我在 Visual Studio C++ 上创建一个表单,并使该表单与屏幕一样大,并且覆盖所有内容,我可以创建一个全屏的表单。如果我按下 windows 键,启动菜单就会出现,我可以在我的上面运行任何其他程序。

如果我运行像英雄联盟这样的视频游戏,屏幕会出现故障,游戏会全屏运行。如果你按下 windows 键,什么都不会发生。你不能在游戏之上拥有任何东西,就像它在自己的环境中一样。

我并不是在寻求完整的答案或执行此操作的代码。只是我很想知道游戏设计师使用了哪些不同的技术。

【问题讨论】:

  • +1 用于在 StackOverflow 问题中包含英雄联盟。喜欢那个游戏。 @Mario 的回答也不错。

标签: c++ windows winforms


【解决方案1】:

这两种技术本质上都是全屏,但有一个细微差别:

  • 大多数游戏使用的“真实”全屏模式称为独占全屏,它授予游戏(或一般程序)对图形输出的独占控制权,因此它能够控制比如分辨率、刷新率、垂直同步等等。

  • 您自己创建的全屏窗口是一个协作全屏(通常称为无边框窗口),它仍然允许其他程序与您的窗口重叠。分辨率、刷新率等仍然由覆盖窗口系统处理。

这两种技术在许多现代游戏中都可以使用,例如英雄联盟

但是,您实际被阻止的 Windows 密钥是不同的。实际的全屏模式对此没有任何影响。相反,程序必须“吃掉”窗口系统发送的按键事件。如果它被传递,那么它仍然由系统处理(你的程序的工作方式)。如果它被吃掉(即没有被退回),那么您将获得您在英雄联盟中看到的行为。

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2012-05-15
    • 2010-09-09
    相关资源
    最近更新 更多