2

您好,我已经设法通过使用 D3DImage 和共享纹理将 SlimDX 和 DirectX 11 图形集成到 WPF 应用程序中。但是,在以高分辨率 (2560x1440) 渲染简单场景(例如 SlimDX 示例中的 GameOfLife)时,我的性能确实很差。

我已经尝试对我的渲染方法进行一些性能分析,看起来大部分时间都花在了使后缓冲区无效时锁定 D3DImage 上。

_d3dImage.Lock(); // <- this call takes 78,5 % of the time when rendering the frame
_d3dImage.AddDirtyRect(new Int32Rect(0, 0, _d3dImage.PixelWidth, _d3dImage.PixelHeight));
_d3dImage.Unlock();

绘制后花费大量时间冲洗设备:

_device.ImmediateContext.Flush(); // <- 20,6% of the time when rendering the frame

任何人都知道这个问题以及如何优化它?在集成 WPF 和 SlimDX 时,您能期望获得下降性能吗?

4

1 回答 1

1

由于您看到锁定和刷新调用的性能问题(这是 GPU 需要与 CPU 同步的点),我猜您的程序严重受 GPU 限制,并且 CPU 必须继续等待它跟上来。禁用计算着色器时性能的提高也体现了这一点。

我不知道在这一点上要告诉你什么,除了如果猜测是正确的,那么你的卡似乎无法处理负载。

于 2012-03-29T21:25:16.130 回答