我使用C#在WPF中创建一个简单的车辆和抛射物模拟游戏.我需要有一个恒定的帧速率(即我需要知道在每帧中以一定的速度移动一个物体的程度).这样我就可以订阅一个事件,根据游戏的物理特性计算和更新位置到CompositionTarget.Rendering事件.
CompositionTarget.Rendering += UpdatePositions;
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了一段时间,但没有找到答案.WPF中的fps 似乎是任意的,并且使用秒表来知道帧与前一帧之间经过的时间根本不会是干净的.
我还考虑创建自己的帧速率,通过每隔几毫秒调用UpdatePositions并希望渲染相应地发生并具有平滑的动画.这似乎重新发明了轮子,我想不出一种以干净简单的方式实现这一点的方法.
谢谢!
在WPF中获取恒定的帧速率是不可能的.WPF基于动态帧速率的概念,这使得它几乎无法用于任何游戏开发.
一些相关信息:
http://rhnatiuk.wordpress.com/2008/12/21/wpf-video-playback-problems/
正如其他人已经指出的那样,不幸的是,解决方案是不使用WPF进行游戏开发.
我已广泛使用WPF动画,在WPF中获得任何平滑动画是绝对痛苦的(如果你想这样做,我在这里写下了一些最佳实践).
我确信WPF对游戏开发不利的原因还有很多.一个例子是您无法在WPF中创建全屏应用程序,因为WPF应用程序始终是窗口化的.这意味着您无法更改游戏的分辨率以使其在全屏幕中流畅,这实际上意味着您无法在WPF中创建全屏游戏并期望获得良好的结果.
如果你对你的游戏或游戏开发非常认真,这不仅仅是一个原型或只是为了好玩,那么我建议你放弃WPF并使用别的东西,否则你只是让自己失望和低于标准质量.
归档时间: |
|
查看次数: |
5818 次 |
最近记录: |