是否允许在MonoGame (XNA) DirectX11中使用多个graphicsdevicemanager ?
本文关键字:graphicsdevicemanager DirectX11 MonoGame XNA 是否 | 更新日期: 2023-09-27 18:03:10
使用MonoGame(基本上是XNA)我有一些代码,允许您在System.Windows.Controls.Image
内部托管DirectX11窗口,其目的是允许您将窗口显示为标准WPF控件。
我创建了这个代码通过查看一些在线代码的例子,展示了类似的功能(因为我是一个完整的游戏开发新手)。在我使用的一些代码中,有一个方法我特别感兴趣,它看起来像这样:
private static void InitializeGraphicsDevice(D3D11Host game, int width, int height)
{
lock (GraphicsDeviceLock)
{
_ReferenceCount++;
if (_ReferenceCount == 1)
{
// Create Direct3D 11 device.
_GraphicsDeviceManager = new WpfGraphicsDeviceManager(game, width, height);
_GraphicsDeviceManager.CreateDevice();
}
}
}
此代码在创建托管对象(即System.Windows.Controls.Image
)时调用,显然其目的是限制创建多个graphicsdevicemanager。然而,我最终遇到的情况是,这段代码阻止了我根据需要创建多个游戏窗口。
我已经将此代码从静态更改为实例,并删除了计数器和所有似乎工作得很好,但我担心有一些基本的我不理解的东西可能会在以后出现。
那么,为什么上面的代码阻止了创建多个devicemanager呢?我在XNA (MonoGame)中创建多个图形设备管理器是否合法?我想这一定是有原因的吧?我认为这是因为xna背后的基本设计思想。你拥有一个游戏循环,一个图像输出窗口等等。
如果我没记错的话,在不同的手柄上创建多个图形设备(在您的情况下是不同的窗口)应该没有问题。