为什么需要重新创建Direct2D渲染目标?

时间:2018-08-27 20:30:31

标签: graphics 2d directx direct2d rendertarget

我正在制作一个游戏引擎,并且我将同时支持OpenGL和Direct2D。我听说rendertargets可以在EndDraw()上返回错误,需要重新创建使用它创建的每个资源。我想知道这种情况是否经常发生,是否应该处理该错误以及如何发生。在OpenGL中,您不会因为这样而失去上下文。那么,是什么原因导致渲染目标丢失,即使出现此问题,我也应该在游戏中使用Direct2D吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

过去(阅读DirectX 9和更早版本)时,当您将焦点从全屏应用程序切换到其他位置时,通常会丢失设备。然后,在您的应用程序不可见的时间内,您没有可绘制的图形设备。而且,当焦点重新放在您的应用程序上时,您必须重新初始化设备以及在该设备上创建的所有资源。

如今(DirectX 10及更高版本),情况不再如此。对图形设备的访问已虚拟化,因此当应用程序失去焦点时,您可以保持设备处理。但是,在某些情况下,您可以松开设备,例如计算机的物理更改,驱动程序崩溃和重置等。因此,松开设备的情况非常少见,并且有些极端。如果需要,您可以处理这些情况(如果要创建稳定的应用程序,则应该处理),但是普通用户很可能不会遇到任何这些极端情况。有关更多信息,请查看this MSDN article