繁体   English   中英

opentk glcontrol自动渲染?

[英]opentk glcontrol auto render?

因此,我有一个用OpenTK(OpenGL)编写的漂亮的c#应用程序...它使用全屏GL窗口,并且按预期的方式,它会在可能的情况下自动运行OnRenderFrame方法,并且我得到了一款出色的60 FPS游戏。

但是,现在我希望在Windows窗体而不是GL窗口的GLControl中使用我的游戏。 无论出于何种原因,它都会运行一次onrenderframe方法,仅此而已。 我尝试使用Application.Idle像他们的文档中所述运行它,但是最终每秒获得大约5帧。

我应该如何使其像原始应用程序一样在循环上运行?

编辑:基本上我正在寻找的是类似于game.Run(60)的东西,您将以每秒60帧的速度初始化OpenGL窗口。

创建一个计时器,该计时器每1/60秒调用GLControl.Invalidate()。 另外,我不建议使用Application.Idle运行动画,因为它具有意外的行为。 您是否正确交换缓冲区?

GLControl是基于事件的,因此仅在手动调用GLControl.Invalidate()之后才会渲染每一帧。

实际上,您不需要始终保持较高的fps。 您只需要呈现更改。 因此可变fps对您来说足够好,因为它占用较少的系统资源。

输入处于活动状态时的Fps值取决于输入设备,例如,我的触摸板每秒接收约60个事件,而在相同的基本样本上,采样频率为1000Hz的a4tech鼠标的接收速度约为750 fps。

无论如何,如果您坚持恒定的fps,则可以如上所述在计时器中调用Invalidate()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM