Я пытаюсь проверить, заполнен ли мой вектор некоторыми данными, но когда я пытаюсь напечатать строку, она дает ошибку «Ошибка чтения с ошибкой 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";
Он останавливается на соиЬ. И вот моя InitMesh функция, от которой соиЬ выполняется правильно:
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 и строка называется имя. Вектор, который держит 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