代码之家  ›  专栏  ›  技术社区  ›  Rod

Direct3D9ex和Direct3D10资源共享

  •  2
  • Rod  · 技术社区  · 17 年前

    使用Direct3D9ex,可以在设备之间共享资源。是否也可以将这些共享资源与Direct3D10设备一起使用?

    3 回复  |  直到 17 年前
        1
  •  3
  •   Suma    17 年前

    是的,您可以使用此处描述的技术在D3D9Ex和HttpClient0设备之间共享资源:

    Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

    请注意,GPU对共享曲面的访问是不同步的——例如,如果您在两个设备上同时渲染到同一个渲染曲面,则会出现各种损坏和竞争。

    为了解决这个问题,请确保一个设备在另一个设备使用它之前完成了对共享曲面的渲染。一个选项是事件查询(IDirect3DQuery9),另一个是对一个小曲面执行StretchRect并锁定它(如果锁定成功,GPU将完成之前的所有工作)

        2
  •  0
  •   Suma    17 年前

    您可以在设备或进程之间共享Direct3D9资源。

    Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

    GameDev.net topic 详细讨论了D3D9Ex和HttpClient0之间的共享。该主题的结论似乎是,虽然基于文档,这应该是可能的(有一些限制),但在实践中根本不起作用(也许限制太严重了,它们阻碍了任何实际使用场景?)

        3
  •  -1
  •   Coincoin    17 年前

    如果我错了,有人会纠正我,但是,不,不。

    你有什么打算?在两台设备上有静态纹理吗?如果是这样,通过将相同的纹理两次加载到两个不同的默认池中,可以很容易地实现。请注意,修改一个并不一定会修改另一个。

    如果你想在另一个设备上显式使用从一个设备生成的纹理,你必须从源设备下载它,并在每一帧上传到目标设备。这将是缓慢的,但如果绝对必要,可以这样做。

    推荐文章