根据文档,当渲染目标满足某些条件时,即使依赖于设备的资源也可以在渲染目标之间共享。
假设我有两个符合这些条件的RenderTargets(RT1和RT2)。我使用RT1创建一个新的设备相关资源(ResourceA),RT1和RT1都是RT2使用此资源进行绘图。
现在当我完成RT1时,我得到D2DERR_RECREATE_TARGET,这意味着我必须重新创建RT1并再次绘制。
我的问题是,我应该重新创建RT1创建的ResourceA吗?
答案 0 :(得分:3)
简短回答:是的,当遇到D2DERR_RECREATE_TARGET时,需要重新创建使用RT1创建的任何资源。
答案很长:D2D资源可以在来自同一工厂的所有RenderTargets之间共享,因为d2d工厂维护与底层D3D设备的内部连接及其资源。 ID2D1RenderTargets实际上只是ID3DTexture2Ds。因此,当d3d纹理无效时,必须重新创建使用底层d3d设备创建的所有资源。