Assimp会加载顶点,但无法显示模型

时间:2019-06-19 13:11:20

标签: c++ opengl glfw assimp

IDE: xcode

系统: MacOS

我要做什么

我的project [repo]就在我成功完成skybox [tutorial link]工作的时候,但是我在assimp's model loading [tutorial link]上苦苦挣扎。

问题

我没有收到任何错误。即使我在cout << vertices.data() << endl; [github line link]的相应行中添加了model.h [github line link],但在将其main.cpp [github line link]初始化并打印0x106e6b000之后,该模型仍未加载到窗口中所以模型顶点正在加载。

但是,除了背景色以外,窗口保持空白。 In the tutorial [youtube video link with timestamp](我忠实地遵循)正在运行。

我要尝试接受的内容:

我正在尝试渲染证明为红色的模型nanosuit.objourModel.Draw( shader );应该绘制它,但是不显示或不显示它。 由于某种原因,尽管没有出现无法找到数据或触发异常的错误,但仍未显示。

我想给出一个MCVE,但是它的代码非常相互联系,因此是github链接。

据我所言,除非有抱怨,否则应该绘制模型。

// 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 );

我尝试过的东西:

  • 旋转相机以检查模型是否在我的视野之外渲染
  • 按比例玩耍
  • 加载其他.obj
  • 打印正在传递的变量,只是看到确实在加载模型,只是不显示

enter image description here

我正在尝试不对转储进行代码编码,因此会产生线路链接。随时告诉我您是否想要代码段。我对这里为什么发生感到迷茫。

编辑:

@Botje建议我尝试以下操作:

  1. modelLoading.frag [repo, line link]使用红色代替纹理,以尽量减少模型纹理出现问题的风险。无效。仍然没有模型。
     void main( )
        {
            //color = vec4( texture( texture_diffuse, TexCoords ));
            color = vec4( 1.0f, 0.0f, 0.0f, 1.0f);
        }
  1. model.h中,编辑的cout << vertices.size() << endl; [repo, line link]打印件对本教程中的nanosuit.obj模型是正确的。我在那里有一个行星,但它不是本教程的一部分,因此是之前的0x106e6b000。我现在得到vertices.size()

      

    156 15222 19350 78 6804 7248 8316

    因此,模型肯定正在加载,只是没有渲染。问题必须在模型加载后但渲染之前出现。

1 个答案:

答案 0 :(得分:2)

知道了。模型从未初始化。该教程是在2018年之前的,那时GLM不再进行自动初始化。

在我发布的代码段中是错误消息。

应该是:

// Draw the loaded model
glm::mat4 model = glm::mat4(1.0f); 

代替:

// Draw the loaded model
glm::mat4 model;

发生了什么事?

我的GLM版本是0.9.9.3,而教程肯定是0.9.9.0之前的版本,而他们更改了该版本。

注意,很多教程都使用此代码。

一个I worked with不是change it either

  

您可以通过单击以下项目中的xcode检查您的GLM版本   您的文件浏览器,在“项目”列表中选择“应用”,然后

     

构建设置>搜索路径>标头搜索路径

     

双击以打开列表。