使用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)时调用此代码,显然它的目的是限制创建多个GraphicsDeviceManagers。然而,我已经在这样的情况下结束了,这段代码阻止我根据需要创建多个游戏窗口。
我已经将这段代码从静态更改为实例,删除了计数器,所有似乎都正常工作,但我担心的是,有一些基本的东西我不明白,以后可能会出现。
那么,为什么上面的代码阻止创建多个DeviceManagers呢?在XNA (MonoGame)中创建多个图形设备管理器是合法的吗?我得假设一定是有原因的?
发布于 2015-07-16 07:54:57
我认为这是因为xna背后的基本设计思想。你有一个游戏循环,一个图形输出窗口,等等。
如果我没记错的话,在不同的手柄上创建多个图形设备应该没有问题(在您的例子中,是不同的窗口)。
https://stackoverflow.com/questions/31447366
复制相似问题