【问题标题】:Force VSYnc or Limit FPS in WinForms - c#在 WinForms 中强制 VSYnc 或限制 FPS - c#
【发布时间】:2013-07-15 12:42:34
【问题描述】:

我已搜索但找不到不涉及 XNA 的结果。

基本上,我正在制作一个地图编辑器,它使用附加到表单中面板句柄的 SFML 的 C# 绑定。它以 550 FPS 的速度运行,这导致我的主循环被调用太多,占用了太多资源(10% 的 CPU 用于小型地图编辑器)。

我真的只需要 60 fps,而且我知道这会导致 CPU 使用率下降很多。

有人知道怎么做吗?我听说这是不可能的,因为 WinForms 没有访问图形驱动程序 VSync 设置的功能;但总有办法吧?

谢谢。

【问题讨论】:

  • 我认为您的百分比是错字? 10% 对于不断绘制地图来说不算什么。
  • 问题是,我不需要 500 FPS,它在不需要的地方施加了不必要的压力。它只是一个 2D 平铺引擎/编辑器,因此它不需要超过 60 fps 甚至 30 fps。我认为 10% 的 CPU 对于每秒渲染 550 次地图来说是很多的;我不需要它渲染那么多。
  • sf::Window::setFramerateLimit 怎么样?你试过了吗?
  • @Hiura 是的,我也尝试过 SetVerticalSyncEnabled。我认为它们不起作用,因为我已将 SFML 窗口放在 WinForms 窗口中,因此我需要更改 WinForms 窗口 FPS。

标签: c# winforms sfml vsync


【解决方案1】:

我最终使用 WinForms 计时器来进行游戏循环处理。通过设置滴答声的间隔,我获得了有效的 60 FPS。

这将 CPU 使用率降低到 0.1%,同时仍然具有相同的功能。

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多