您好我已经设法通过使用D3DImage和共享纹理将SlimDX和DirectX 11图形集成到WPF应用程序中。但是,在高分辨率(2560x1440)下渲染简单场景(例如SlimDX示例中的GameOfLife)时,我的性能会很差。WPF和SlimDX(DirectX 11)互操作
我试着做我的渲染方法的一些性能分析,它看起来像大部分的时间都是在无效backbuffer时锁定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();
大量的时间都花在绘画后flusing设备:
_device.ImmediateContext.Flush(); // <- 20,6% of the time when rendering the frame
任何人都知道的问题,以及如何优化呢?在集成WPF和SlimDX时,你能期望获得下降性能吗?
锁定线程,直到UI线程停止读取后台缓冲区,并且冲洗非常昂贵,因此这些结果并不少见。你的实际表现数字是多少?您的GPU是否支持计算着色器?如果没有,那么这将在软件中运行(即以嗅觉速度)。 – 2012-03-29 03:24:32
看起来问题可能与GameOfLife示例中使用的计算着色器有关。如果我禁用它的帧速率回到60fps ... – Pking 2012-03-29 11:24:21