Assimp 加载顶点,但模型未显示
Assimp loads vertices, but model is not getting displayed
IDE: xcode
系统: MacOS
我想做什么
我的project [repo] is at the point where I successfully made a skybox [tutorial link] work, but I'm struggling with assimp's model loading [tutorial link].
问题
我没有收到任何错误。模型只是没有加载到 window,即使我添加了正在打印 0x106e6b000
的 cout << vertices.data() << endl;
[GitHub line link] at the respective line in the model.h
[GitHub line link], after it get's initialized in main.cpp
[GitHub line link],所以模型顶点正在加载。
但是,window 除了背景颜色之外仍然是空的。
In the tutorial [YouTube video link with timestamp],我忠实地遵循了它,它正在工作。
我想要达到的目标:
我正在尝试渲染模型 nanosuit.obj
,它被证明是红色的。ourModel.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 );
我试过的东西:
- 旋转相机以检查模型渲染是否在我的 FOV 之外
- 尝试缩放
- 正在加载其他
.obj
s
- 打印正在传递的变量,只是看到确实正在加载模型,只是没有显示
我正在尝试不编码转储,因此该行链接。如果您需要代码片段,请随时告诉我。至于为什么会这样,我有点迷路了。
编辑:
@Botje 建议我试试这些东西:
modelLoading.frag
[repo, line link] 应用红色而不是纹理,以尽量减少模型纹理出现问题的风险。是无效的。仍然没有模型。
void main( )
{
//color = vec4( texture( texture_diffuse, TexCoords ));
color = vec4( 1.0f, 0.0f, 0.0f, 1.0f);
}
- 在
model.h
中,编辑了 cout << vertices.size() << endl;
[repo, line link] 打印,这对于教程中的 nanosuit.obj
模型是正确的。我在那里有一个行星,它不是教程的一部分,因此是之前的 0x106e6b000
。我现在得到 vertices.size()
:
156 15222 19350 78 6804 7248 8316
所以模型肯定正在加载,只是没有渲染。问题一定是在模型加载之后但渲染之前的某个地方。
知道了。模型从未初始化。该教程是 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 didn't change it either.
You can check your GLM version in xcode by clicking on the project in
your file browser, selecting the App in the Tartget list and then
Build Settings > Search Paths > Header Search Paths
Double click to open the list.
IDE: xcode
系统: MacOS
我想做什么
我的project [repo] is at the point where I successfully made a skybox [tutorial link] work, but I'm struggling with assimp's model loading [tutorial link].
问题
我没有收到任何错误。模型只是没有加载到 window,即使我添加了正在打印 0x106e6b000
的 cout << vertices.data() << endl;
[GitHub line link] at the respective line in the model.h
[GitHub line link], after it get's initialized in main.cpp
[GitHub line link],所以模型顶点正在加载。
但是,window 除了背景颜色之外仍然是空的。 In the tutorial [YouTube video link with timestamp],我忠实地遵循了它,它正在工作。
我想要达到的目标:
我正在尝试渲染模型 nanosuit.obj
,它被证明是红色的。ourModel.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 );
我试过的东西:
- 旋转相机以检查模型渲染是否在我的 FOV 之外
- 尝试缩放
- 正在加载其他
.obj
s - 打印正在传递的变量,只是看到确实正在加载模型,只是没有显示
我正在尝试不编码转储,因此该行链接。如果您需要代码片段,请随时告诉我。至于为什么会这样,我有点迷路了。
编辑:
@Botje 建议我试试这些东西:
modelLoading.frag
[repo, line link] 应用红色而不是纹理,以尽量减少模型纹理出现问题的风险。是无效的。仍然没有模型。
void main( )
{
//color = vec4( texture( texture_diffuse, TexCoords ));
color = vec4( 1.0f, 0.0f, 0.0f, 1.0f);
}
- 在
model.h
中,编辑了cout << vertices.size() << endl;
[repo, line link] 打印,这对于教程中的nanosuit.obj
模型是正确的。我在那里有一个行星,它不是教程的一部分,因此是之前的0x106e6b000
。我现在得到vertices.size()
:
156 15222 19350 78 6804 7248 8316
所以模型肯定正在加载,只是没有渲染。问题一定是在模型加载之后但渲染之前的某个地方。
知道了。模型从未初始化。该教程是 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 didn't change it either.
You can check your GLM version in xcode by clicking on the project in your file browser, selecting the App in the Tartget list and then
Build Settings > Search Paths > Header Search Paths
Double click to open the list.