我正在编写一个带有directX api的程序。我开始使用 DXUT。我在尝试控制 directX 设备的引用计数时遇到问题。似乎每次我调用 D3DXCreateMesh()、D3DXCreateTextureFromFile() 或 IDirect3DDevice9::CreateVertexBuffer() 时都会向设备添加一个引用。我尝试使用“SYSTEMMEM”标志将新创建的对象(网格、纹理或顶点缓冲区)存储在系统内存中,而不是将其存储在设备的分配中。这是一个添加了对设备的引用的调用示例...
DWORD dwNumFaces = 1, dwNumVertices = 3, dwOptions |= D3DXMESH_SYSTEMMEM;
D3DVERTEXELEMENT9 mesh_decl
{
...
}
ID3DXMESH *pMesh = NULL;
D3DXCreateMesh(dwNumFaces, dwNumVertices, dwOptions, mesh_decl, m_pd3dDevice, &pMesh);
有关此问题的任何想法或信息链接?这是可以预料的吗?到目前为止的解决方案是在每次调用上述函数后直接释放设备 (m_pd3dDevice->Release())。当 DXUT 尝试释放设备时,会抛出一个错误,指出设备的引用计数大于零。