Windows cpp 目标在较高分辨率下变慢

Windows cpp target slows down in higher resolutions

在使用以下设置构建 windows (cpp) 目标时,我的 haxeflixel 游戏遇到了一些意外的性能问题

    <window if="cpp" width="480" height="270" fps="60" background="#000000"
        hardware="false" vsync="true" />

我注意到,当我将 window 的分辨率重新调整为更大的分辨率,或全屏显示至 1920x1080p 时,游戏变得更慢且滞后。然而,根据 flixel 调试控制台,所有分辨率的帧率都是相同的。

更有趣的是,我的闪存导出 运行 更加流畅,而我希望 cpp 目标 运行 更快。

这是一个 2d 平台游戏,大约有 6 个瓦片地图(最大的瓦片地图是 1600x1440)和 32x32 或 16x16 的精灵。我没想到在任何现代系统上都会出现性能问题。所以我担心我做错了什么,比如缺少明显的设置。

这正常吗?是否有任何我应该检查的关键渲染性能因素?如果您认为这有帮助,请随时向我询问任何详细信息。

使用 Haxeflixel 3.3.12

我认为这可能是所有 C++ 目标中的一个普遍问题。我在游戏的 Linux 本机目标中也遇到过这种情况。我的解决方案是通过

禁用抗锯齿
<window antialiasing="0" />

当然,这最适合像素艺术,而不是 3D 或高清内容。然后仍然存在性能在更高分辨率(视网膜显示器等)下下降的潜在问题。但这可能足以作为权宜之计。

我一直在用不同的配置测试我的应用程序设置,最后我发现关闭 vsync 选项会产生最大的影响。有一些垂直抖动,但游戏最终运行速度很快,windows目标比闪光灯快。

原来我现在的笔记本电脑有一个 IntelHD GPU,而且 vsync 功能似乎坏了。我记得我以前配备低端 AMD GPU 的 PC 没有这个问题。

我会考虑添加一个游戏内选项来切换垂直同步,这样非英特尔用户也可以从垂直同步中受益。

其他似乎有帮助的事情是:

  1. 按照@Jon O 的建议关闭antialiasing
  2. 开启hardware

作为参考,我当前的设置是

<window if="cpp" width="960" height="540" fps="60" background="#000000" hardware="true" vsync="false" antialiasing="0" />