0

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

4

1 回答 1

0

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

今天(DirectX 10 及更高版本)不再是这种情况。对图形设备的访问是虚拟化的,因此当应用程序失去焦点时,您可以保留设备句柄。但是,仍有少数情况下会丢失设备,例如计算机的物理变化、驱动程序的崩溃和重置等。因此,丢失设备的情况非常罕见,而且有些极端。如果你愿意,你可以处理这些情况(如果你想创建一个稳定的应用程序,你应该这样做),但普通用户很可能不会遇到任何这些极端情况。有关详细信息,请查看此 MSDN 文章

于 2018-08-28T07:00:44.087 回答