You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:24:29