C ++ XAML游戏中的Direct2d访问冲突

时间:2014-03-24 11:58:06

标签: c++ xaml windows-phone directx

我使用DirectXToolkit在C ++(仅限本机)中创建了一个Windows Phone游戏,并希望使用XAML和C ++重新创建此应用程序。

我按照this教程中的所有步骤操作,但遇到了以下问题。

void Renderer::CreateDeviceResources()函数中,我正在调用m_spriteBatch = unique_ptr<SpriteBatch>(new DirectX::SpriteBatch(m_d3dContext.Get()));

然而,这会导致MainPage.xaml.cs行内DrawingSurfaceBackground_Loaded函数内的DrawingSurfaceBackground.SetBackgroundContentProvider(m_d3dBackground.CreateContentProvider());出现问题

我收到了An unhandled exception of type 'System.AccessViolationException' occurred in Unknown Module. Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

删除m_spriteBatch...行时,一切正常,但我无法在游戏中渲染我的精灵。

知道怎么解决这个问题吗?我是C ++的新手,所以我不知道在哪里看。

1 个答案:

答案 0 :(得分:0)

这是猜测,但也许你不能使用&#34; new&#34;来实例化。正如你所做的那样:

(new DirectX::SpriteBatch(m_d3dContext.Get()))

在这种情况下, new 正在为堆分配内存。这会导致内存访问冲突吗?