我有一个slimDx win表单应用程序,它可以在数千个drawcalls的过程中向屏幕呈现数千个对象。在我的机器上,它非常高兴地在150 FPS左右。
然后我试图通过让WPF托管slimdx内容将其移植到WPF应用程序。
第一种方法是使用SlimDx样本给出的方法,其中它们使用可由SlimDx写入并由WPF呈现的共享纹理。当我尝试这个时,对于相同的工作量,我得到大约12-14的帧速率。我相信这是因为他们在CompositionTarget.Rendering事件上执行SlimDx渲染,该事件在60FPS左右。而在Win32 / Forms应用程序中,您可以访问MessageLoop并且能够在没有要处理的消息时(即在空闲时间内)进行渲染,使用CompositionTarget.Render,您可以按照WPF的速度进行渲染,因此您不需要#39; t得到这个"空闲时间"对你有利,结果是你最多可以获得60 FPS - 减去你在CompositionTarget.Rendering事件处理程序中做的事情需要很长时间,我相信这就是我获得低FPS的原因
然后我尝试使用WindowsFormsHost对象来托管SlimDx Renderform,并使用winforms Timer作为" Render Tick",但是我有同样的问题,我似乎只是在最好的速度约为60 FPS。当我然后添加渲染代码时,我回到低fps。
我怎样才能获得与裸骨赢表格App类似的表现? (我不需要150fps,我只需要它超过30FPS)
我不认为在这里粘贴任何代码会有所帮助,因为有太多,但我可以上传项目,如果它有帮助