是否允许在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)中创建多个图形设备管理器是否合法?我想这一定是有原因的吧?

是否允许在MonoGame (XNA) DirectX11中使用多个graphicsdevicemanager ?

我认为这是因为xna背后的基本设计思想。你拥有一个游戏循环,一个图像输出窗口等等。

如果我没记错的话,在不同的手柄上创建多个图形设备(在您的情况下是不同的窗口)应该没有问题。

相关文章:
  • 没有找到相关文章