1

根据文档,当渲染目标满足某些条件时,即使是设备相关资源也可以在渲染目标之间共享。

假设我有两个满足这些条件的 RenderTargets(RT1 & RT2)。我使用 RT1 创建一个新的设备相关资源(ResourceA),RT1 和 RT2 都使用这个资源来做一些绘图。

现在,当我完成 RT1 后,我得到 D2DERR_RECREATE_TARGET,这意味着我必须重新创建 RT1 并再次绘制。

我的问题是,我应该重新创建由 RT1 创建的 ResourceA 吗?

4

1 回答 1

3

简短回答:是的,当遇到 D2DERR_RECREATE_TARGET 时,需要重新创建使用 RT1 创建的任何资源。

长答案:D2D 资源可以在来自同一工厂的所有 RenderTargets 之间共享,因为 d2d 工厂维护与底层 D3D 设备及其资源的内部连接。ID2D1RenderTargets 实际上只是 ID3DTexture2Ds。因此,当 d3d 纹理无效时,也必须重新创建使用底层 d3d 设备创建的所有资源。

于 2011-12-24T11:57:33.437 回答