【发布时间】:2014-06-29 08:59:37
【问题描述】:
我一直致力于在 Windows Phone 上使用 Direct3D 的项目。这只是一个带有 2d 图形的简单游戏,我使用 DirectXTK 来帮助我制作精灵。
最近,我在 512mb 模拟器上调试时遇到内存不足错误。这个错误并不常见,是一系列 open、suspend、open、suspend ... 的结果。
跟踪它,我发现每次激活应用程序时都会加载纹理,并最终填满允许的内存。为了解决这个问题,我可能会去编辑它,以便仅在打开时加载纹理,但从暂停中激活;但是在这个问题之后,我很好奇纹理资源的正确生命周期管理。在搜索时,我遇到了自动(或由微软“管理”)纹理管理http://msdn.microsoft.com/en-us/library/windows/desktop/bb172341(v=vs.85).aspx。这可能有助于对视频内存中的纹理进行一些管理。
但是,我也想知道其他方法,因为我想不出一种将托管纹理合并到我的代码中的好方法。
我最好是调用我存储在析构函数中的 ID3D11ShaderResourceView 指针的 Release 方法来防止内存填满,但是我如何确保纹理在内存中休息而其他应用程序想要使用它(内存)?
【问题讨论】: