MonoGame Windows 8 - WriteableBitmap

3
如果您将以下代码放入MonoGame应用程序的游戏循环(Update或Draw)中(可以是默认项目模板):
new Windows.UI.Xaml.Media.Imaging.WriteableBitmap(150, 150);

它抛出了一个跨线程错误...

The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))

于是我尝试了这个:
var dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher;
dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, delegate
{
     new Windows.UI.Xaml.Media.Imaging.WriteableBitmap(150, 150);
});

同样的错误。

从底层上看,似乎MonoGame没有在后台线程上运行游戏循环。它使用同步循环。

有什么想法可以在MonoGame中使用WriteableBitmap吗?(我需要用它来渲染一些实时磁贴)

1个回答

1
如果您正在使用Game类,则默认情况下创建的应用程序不支持XAML。
目前,在MonoGame应用程序中支持XAML的最佳方法是使用本主题中概述的Siverlight-style XNA游戏...

http://monogame.codeplex.com/discussions/359544


通过创建一个特定于Windows 8的子类来使我的主要“Game”对象工作。然后在其中使用“GameTimer”分别调用“Update”和“Draw”。应用程序的Xaml部分只需要新建我的“Game”类,一切都会启动。 - jonathanpeppers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接