2010-02-05 4 views
1

Я получаю ошибку в названии в следующем коде:Assertion Ошибка: _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