0
我試圖驗證是否我的矢量充滿了一些數據,但是當我嘗試打印一個字符串,它的程序給出了「訪問衝突讀取位置0x00000010」的錯誤。訪問衝突在OpenGL
這裏是我的代碼:
for (unsigned int i = 0; i < mMeshes.size(); ++i) {
InitMesh(i, mScene->mMeshes[i], Positions, TexCoords, Normals, VertexBones, Indices);
}
std::cout << mBones[mBoneMap["forearm.L"]].Name << "\n";
它停在COUT。這裏是我的InitMesh功能,從中正確執行COUT:
for (unsigned int i = 0; i < pMesh->mNumBones; ++i) {
std::string BoneName = pMesh->mBones[i]->mName.data;
int BoneIndex = 0;
if (mBoneMap.find(BoneName) == mBoneMap.end()) {
BoneIndex = mNumBones;
mNumBones++;
BoneInfo bi;
mBones.push_back(bi);
}
else {
BoneIndex = mBoneMap[BoneName];
}
mBoneMap[BoneName] = BoneIndex;
mBones[BoneIndex].Name = BoneName;
std::cout << mBones[i].Name << "\n";
AiToGLM(pMesh->mBones[i]->mOffsetMatrix, mBones[BoneIndex].OffsetTransform);
for (unsigned int j = 0; j < pMesh->mBones[i]->mNumWeights; ++j) {
unsigned int VertexID = mMeshes[MeshIndex].BaseVertex + pMesh->mBones[i]->mWeights[j].mVertexId;
VertexBones.at(VertexID).Add(i, pMesh->mBones[i]->mWeights[j].mWeight);
}
}
的BoneInfo是有兩個matices一個struct和一個名爲名稱的字符串。保存BoneInfos的矢量位於頭文件中:
struct BoneInfo {
std::string Name;
glm::mat4 OffsetTransform;
glm::mat4 FinalTransform;};
private:
std::vector<BoneInfo> mBones;
std::map<std::string, int> mBoneMap;
int mNumBones = 0;
檢查'mBoneMap [ 「forearm.L」]'的值,並確保它是<'mNumBones'(但> = 0)。 – keltar