【发布时间】:2016-03-05 23:37:18
【问题描述】:
所以我有这个用 OpenTK (OpenGL) 编写的不错的 c# 应用程序......它使用全屏 GL 窗口,就像它应该做的那样,它会尽可能自动运行 OnRenderFrame 方法,我得到了一个很棒的 60 FPS 游戏.
但是,现在我希望在 Windows 窗体而不是 GL 窗口中的 GLControl 中使用我的游戏。无论出于何种原因,它都会运行一次 onrenderframe 方法,仅此而已。我尝试使用 Application.Idle 来运行它,就像它在他们的文档中所说的那样,但我最终得到了大约每秒 5 帧。
我应该如何让它像原始应用程序一样在循环上运行?
编辑:基本上我正在寻找类似于 game.Run(60) 的东西,您将使用它以每秒 60 帧的速度初始化 OpenGL 窗口。
【问题讨论】:
-
能否提供您已经尝试过的代码?
-
MainForm.Load 事件触发 load() 方法,该方法显示 Application.Idle += OnRenderFrame;这让我每秒获得大约 6 帧。
-
哇!我发现了一些很奇怪的东西。使用 application.idle 更新帧,如果我在窗口上不断地左右移动鼠标或按住键盘上的一个键,那么它会保持在每秒 60 帧的完美速度。为什么会发生这种情况,我怎样才能让它总是发生??
标签: c# .net winforms opengl opentk