D2DERR_RECREATE_TARGET错误是否真的意味着我必须跟踪渲染目标创建的所有内容?

时间:2014-10-15 23:03:44

标签: c# c++ directx direct2d sharpdx

我每小时多次随机获取此错误(D2DERR_RECREATE_TARGET),在阅读该错误后,我似乎无法避免。我正在使用SharpDX,它是一个开源项目,在.Net平台下提供完整的DirectX API。"

根据microsoft的文档:" Direct2D通过从EndDraw方法返回错误代码D2DERR_RECREATE_TARGET来发送丢失的设备。如果收到此错误代码,则必须重新创建渲染目标和所有依赖于设备的资源。"

这是否真的意味着我需要跟踪渲染目标创建的每个依赖于设备的资源(有很多!)并停止使用或者我错了吗?或者也许这里有人知道解决这个错误的方法?

1 个答案:

答案 0 :(得分:5)

使用D2DERR_RECREATE_TARGET失败的渲染目标创建的对象不能再用于绘图。

所以:是的,您需要跟踪所需的对象并重新创建或不使用它们。

很奇怪,你经常会收到错误。也许您的复杂渲染会触发视频驱动程序中的错误或使用太多内存。

有时,错误可能就像在特定视频卡上绘制位图边界之外一样简单。

启用D2DD3D调试图层可能有助于找到错误原因。