2010-02-05 97 views
1

我得到了下面的代码在标题中错误:断言错误:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)

std::vector<short> GetIndicesFromID3DXMesh(ID3DXMesh* model) 
{ 
    //LPVOID * ppData; 
    DWORD stride = sizeof(short); 
    BYTE* ibptr = NULL; 

    short* indices = new short[model->GetNumFaces() * 3]; 

    std::vector<short> copy; 

    model->LockIndexBuffer(0, (LPVOID*)&indices); 

    for(size_t i = 0; i < model->GetNumFaces() * 3; i++) 
    { 
     copy.push_back(indices[i]); 
    } 

    model->UnlockIndexBuffer(); 

    delete []indices; 
    return copy; 
} 

在这行删除[]指数

我不知道为什么我得到它,我不知道我怎么得到它,我可以不明白它吗?

回答

2

不要为您的索引分配空间。 DirectX进行分配,然后在您解锁时释放它。

short* indices = NULL; 
model->LockIndexBuffer(0, (LPVOID*)&indices); 
+0

啊,我知道这将是愚蠢的。 – tweetypi 2010-02-05 14:45:16