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

标签 c# c++ directx direct2d sharpdx

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

根据微软的文档:“Direct2D 通过从 EndDraw 方法返回错误代码 D2DERR_RECREATE_TARGET 来表示设备丢失。如果您收到此错误代码,则必须重新创建渲染目标和所有与设备相关的资源。”

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

最佳答案

由失败并返回 D2DERR_RECREATE_TARGET 的渲染目标创建的对象不能再用于绘制。

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

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

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

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

关于c# - D2DERR_RECREATE_TARGET 错误是否真的意味着我必须跟踪渲染目标创建的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26393565/

相关文章:

c++ - 最小化时 DirectX 崩溃

c# - 内部异常的单元测试

c# - 如何使用 Entity Framework (Core) 解决每组最大 n 问题?

C++链接错误LNK2005

c++ - 延迟着色 DirectX 演示?

c++ - 渲染到小 map 的纹理,directX

c# - IoC 容器 - 单例还是传递实例?

c# - 如何忽略 Entity Framework 中的非抽象基类?

c++ - Qt - QPainter.DrawText 不绘制文本

c++ - OpenGL C++ Plain Subdivison in QUADS (Radiosity) patches on arrays