2010-02-05 4 views
1

je reçois l'erreur dans le titre dans le code suivant:Assertion Erreur: _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; 
} 

A la ligne, supprimer [] indices

Je ne sais pas pourquoi je obtenir, je ne sais pas comment je l'obtiens, je peux pas l'obtenir?

Répondre

2

Ne pas allouer l'espace pour vos indices. DirectX ne l'allocation et libère alors quand vous appelez déverrouiller.

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

Ah oui, je savais que ce serait quelque chose de stupide comme ça. – tweetypi

Questions connexes