我们的应用程序的UWP版本运行时帧速率要慢得多(6 fps vs 24 fps),而桌面版本则相当于桌面版本。请注意,两个版本都在相同的硬件上进行了测试。
两个版本都是使用SharpDX构建的,唯一的区别是如何设置RenderTargets。 Windows应用使用HwndRenderTarget
,UWP应用使用SurfaceImageSource
画笔绘制成Rectangle
。
我们已经将主要罪魁祸首(至少在CPU方面)缩小到FillGeometry
,这在UWP上耗费了大量时间。
与桌面相比,上述UWP配置中FillGeometry
需要花费更长时间的原因是否有原因?
注意:渲染代码在两者上都是相同的,因此请避免同样影响两种实现的建议,例如使用GeometryRealization
而不是Geometry
。我们正在寻找UWP和桌面上渲染性能差异的原因。
如果有几何因素可能会影响性能,那么了解这些因素也很有用,因为我们的分析工具可能并不完全准确。
答案 0 :(得分:0)
其中一个因素似乎是内部Direct2D剪辑在这些情况下的工作方式不同。
我们的场景有数百个几何,我们的初始代码没有剪切到视口,而是依赖于Direct2D进行裁剪。这导致原始帖子中提到的帧率不同。
当添加显式剪辑时,UWP版本的帧速率增加到大约16fps(仍然低于桌面应用程序的帧速率),而桌面版本的帧速率没有受到太大影响。
所以在这一点上,假设在这两种情况下不同的裁剪程序都起作用。
这还没有完全解决,因为我们在帧速率方面仍然存在显着差异。但这是一个开始。