这个问题可能是由于以下几种原因导致的:
if (!scene) {
std::cout << "Failed to load model: " << importer.GetErrorString() << std::endl;
return;
}
// 从Assimp场景中提取顶点数据
std::vector vertices;
for (unsigned int i = 0; i < scene->mMeshes[0]->mNumVertices; i++) {
aiVector3D pos = scene->mMeshes[0]->mVertices[i];
vertices.push_back(pos.x);
vertices.push_back(pos.y);
vertices.push_back(pos.z);
}
// 创建和绑定顶点缓冲区
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(float), &vertices[0], GL_STATIC_DRAW);
// 设置顶点属性指针
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// 在着色器中设置顶点位置属性
layout (location = 0) in vec3 aPos;
// 计算模型矩阵并传递给着色器
mat4 model = mat4(1.0f);
model = translate(model, vec3(0.0f, 0.0f, 0.0f));
unsigned int modelLoc = glGetUniformLocation(shaderProgram, "model");
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, value_ptr(model));
如果你仍然无法解决问题,建议进一步检查代码中的错误,并仔细查看Assimp和OpenGL的文档,确保正确地使用它们。