我使用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 ++的新手,所以我不知道在哪里看。
答案 0 :(得分:0)
这是猜测,但也许你不能使用&#34; new&#34;来实例化。正如你所做的那样:
(new DirectX::SpriteBatch(m_d3dContext.Get()))
在这种情况下, new 正在为堆分配内存。这会导致内存访问冲突吗?