none
D3DImage AddDirtyRect CPU 占用问题 RRS feed

  • 问题

  • 本人使用C++ 写了一个Scene 并将介面表层指针传入D3DImage的SerBackBuffer中。 在使用dispatchtimer(间隔25ms)每次更新Scene后对D3DImage使用AddDirtyRect进行刷新时,我发现AddDirtyRect占用的CPU时间很多。

    即创建一个不绘制任何东西的IDirect3DSurface9将其传递给D3DImage作为其后台缓冲区的源,以间隔25ms的速度对D3DImage使用AddDirtyRect方法更新,也占用较大CPU时间。

    不知道D3DImage是否使用了共享纹理,而不是先将后台缓冲区的源复制至CPU再复制到GPU中呈现。

    C++Scene 中建立的DX9Ex设备传入的Hwnd为D3DImage所在的WPF窗体的句柄

    不知道有没有办法提升性能

    测试环境:

    - Windows 8
    - .Net Framework 4.5
    - Intel Core i7-3820QM 2.7 GHz processor
    - 16GB System RAM
    - AMD Radeon HD7970M with 2GB video memory

    2013年10月4日 11:42

答案

  • 您好,

    根据您的描述和在英语论坛的问题:

    #D3DImage AddDirtyRect CPU Utilization
    http://social.msdn.microsoft.com/Forums/en-US/89635d59-afb3-463b-87ea-9355ed004bb9/d3dimage-adddirtyrect-cpu-utilization?forum=wpf

    >>I use Directx9Ex device's CreateRenderTarget to create directx9surface and push it to a d3dimage as its back buffer.

    因为对于Directx9Ex, 它已经是不经过CPU拷贝过程,直接复制到视频卡中显示,也因此调用AddDirtyRect方法进行刷新时的CPU利用率提升是一种普遍的问题,详细回复请参考英文贴。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 Vincky 2013年10月8日 8:00
    2013年10月7日 12:47
    版主