Assimp加载顶点但模型无法渲染问题(Xcode/MacOS环境)
模型已成功加载(顶点数据已验证)但在OpenGL+Assimp环境下无法渲染
环境信息
- IDE:Xcode
- 系统:MacOS
项目背景
我已经在自己的OpenGL项目中成功实现了天空盒功能,现在参照教程尝试用Assimp进行模型加载时遇到了问题。
问题详情
模型完全无法显示在窗口中,但没有任何错误提示。为了排查问题,我在model.h中添加了cout << vertices.data() << endl;语句,在main.cpp初始化模型后,控制台输出了0x106e6b000——这说明顶点数据已经成功加载到内存中。我还添加了cout << vertices.size() << endl;来统计顶点数量,输出结果为156 15222 19350 78 6804 7248 8316,和教程里使用的nanosuit.obj模型顶点数完全一致,进一步确认模型数据已经完整加载。
但窗口始终只显示背景色,我已经按照教程要求调用了ourModel.Draw( shader );来绘制模型,却没有任何效果。我严格跟着教程步骤操作,教程中的功能是正常运行的。
以下是我用于绘制模型的代码:
// Draw the loaded model glm::mat4 model; model = glm::translate( model, glm::vec3( 0.0f, -1.75f, 0.0f ) ); // Translate it down a bit so it's at the center of the scene model = glm::scale( model, glm::vec3( 0.2f, 0.2f, 0.2f ) ); // It's a bit too big for our scene, so scale it down glUniformMatrix4fv( glGetUniformLocation( shader.Program, "model" ), 1, GL_FALSE, glm::value_ptr( model ) ); ourModel.Draw( shader );
已尝试的排查操作
- 旋转相机视角,确认模型没有处于视锥体(FOV)之外
- 调整缩放参数,尝试放大或缩小模型
- 测试加载其他.obj格式模型,结果同样无法显示
- 打印关键变量,确认模型数据确实已加载
- 根据建议修改了
modelLoading.frag片段着色器,将纹理采样替换为纯红色输出,排除纹理问题:
但修改后问题依旧,模型仍然无法显示。void main( ) { //color = vec4( texture( texture_diffuse, TexCoords )); color = vec4( 1.0f, 0.0f, 0.0f, 1.0f); }
由于代码关联性很强,我无法提供最小可复现示例(MCVE),但可以提供完整项目代码供参考。
内容的提问来源于stack exchange,提问作者blkpingu
相关产品推荐
相关产品推荐

