关于C ++:Windows CPP目标的分辨率降低

Windows cpp target slows down in higher resolutions

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

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

我注意到,当我将窗口大小调整为更大的分辨率,或者将其全屏显示为1920x1080p时,游戏变得更加缓慢和滞后。但是,根据flixel调试控制台,所有分辨率的帧频均相同。

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

这是一款2D平台游戏,包含约6个tilemap(最大的tilemap为1600x1440)和32x32或16x16的精灵。我没想到在任何现代系统上都会有性能问题。因此,我担心自己做错了什么,例如缺少明显的设置。

这正常吗?我应该检查一些关键的渲染性能因素吗?如果您认为这会有所帮助,请随意询问我任何细节。

使用Haxeflixel 3.3.12


我认为这可能是所有C ++目标中的常见问题。我也通过我的游戏的Linux本机目标体验了这一点。我的解决方案是通过禁用抗锯齿

1
<window antialiasing="0" />

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


当我最终发现关闭vsync选项将产生最大的影响时,我一直在用不同的配置测试我的应用程序设置。有一些垂直抖动,但是游戏最终运行得很快,并且Windows目标比Flash更快。

事实证明,我当前的笔记本电脑具有IntelHD GPU,并且vsync功能似乎已损坏。我记得我以前的PC配备了低端AMD GPU时没有这个问题。

我将考虑添加一个游戏内选项来切换vsync,以便非英特尔用户可以从vsync中受益。

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

  • 建议使用@Jon O关闭antialiasing
  • 开启hardware
  • 供参考,我当前的设置是

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