本机C++OpenGL到托管C++到Winform C#-调试过程中速度较慢

本文关键字:过程中 调试 速度 C#- Winform C++OpenGL C++ 本机 | 更新日期: 2023-09-27 17:58:49

我正在开发一个小型引擎,该引擎可以独立运行,也可以在winform应用程序中运行。到目前为止,我已经完成了这两项工作,唯一的问题是在visual studio中调试期间,winform应用程序的游戏屏幕更新缓慢,这导致玩家滞后。

但是,如果我在没有调试器的情况下打开创建的.exe,它会顺利运行。

这样我就可以轻松地编辑winform,查看我的更改,并在没有延迟的情况下玩游戏。我问你们是否可以帮助我。

你可以在这里看到我的代码:

https://github.com/insanepure/SweetEngine/

Sweet.Editor是C#Winform,它依赖于Sweet.Wrapper,后者是托管C++应用程序。这取决于Sweet.Game(对于游戏特定组件,也可以作为独立组件运行)和Sweet.Engine(它取决于Sweet Core等,但我抽象了它,所以你只需要将Sweet.Egine包含在Sweet.Game中)

因此,该工具的工作原理是获取特定面板的HWND,然后使用该HWND创建引擎,而不是创建新的引擎。这是独立和工具之间的唯一区别。

问题可能是因为我在SweetEngine中运行自己的循环。我试图改变这一点,以便winform调用Update和Render,但这比在单独的循环中执行要慢。此外,我不确定为什么这比让应用程序调用"更新和渲染"更快。

我遇到的另一个问题是,我无法调试我的原生c++代码,所以我无法介入其中。这能以某种方式解决吗?

本机C++OpenGL到托管C++到Winform C#-调试过程中速度较慢

切换到WPF并使用从usercontrol继承的类,这样我就可以在调用OnPaint()时绘制,而且我使用计时器每秒调用OnPaint 60次。现在效果更好了。