与桌面相比,UWP上的FillGeometry要慢得多吗?

时间:2015-11-18 17:29:00

标签: performance desktop uwp direct2d sharpdx

我们的应用程序的UWP版本运行时帧速率要慢得多(6 fps vs 24 fps),而桌面版本则相当于桌面版本。请注意,两个版本都在相同的硬件上进行了测试。

两个版本都是使用SharpDX构建的,唯一的区别是如何设置RenderTargets。 Windows应用使用HwndRenderTarget,UWP应用使用SurfaceImageSource画笔绘制成Rectangle

我们已经将主要罪魁祸首(至少在CPU方面)缩小到FillGeometry,这在UWP上耗费了大量时间。

与桌面相比,上述UWP配置中FillGeometry需要花费更长时间的原因是否有原因?

注意:渲染代码在两者上都是相同的,因此请避免同样影响两种实现的建议,例如使用GeometryRealization而不是Geometry。我们正在寻找UWP和桌面上渲染性能差异的原因。

如果有几何因素可能会影响性能,那么了解这些因素也很有用,因为我们的分析工具可能并不完全准确。

1 个答案:

答案 0 :(得分:0)

其中一个因素似乎是内部Direct2D剪辑在这些情况下的工作方式不同。

我们的场景有数百个几何,我们的初始代码没有剪切到视口,而是依赖于Direct2D进行裁剪。这导致原始帖子中提到的帧率不同。

当添加显式剪辑时,UWP版本的帧速率增加到大约16fps(仍然低于桌面应用程序的帧速率),而桌面版本的帧速率没有受到太大影响。

所以在这一点上,假设在这两种情况下不同的裁剪程序都起作用。

这还没有完全解决,因为我们在帧速率方面仍然存在显着差异。但这是一个开始。