OpenGL-矩阵逻辑错误

OpenGL - Matrix Logic Error

本文关键字:错误 OpenGL-      更新时间:2023-10-16

我单独使用模型矩阵将我加载的模型(Blender中的猴子脸)传输到从模型空间到世界空间的vbo中。然而,模型被扭曲得令人难以置信(延伸到无穷大),我很困惑为什么会发生这种情况。

这段视频显示了模型围绕y轴不断旋转,试图清楚地显示我的问题。我确信我加载的OBJ模型是有效的。熔岩纹理被绑定到模型上,使其更容易看到。

视频还显示了控制台显示我正在发送到顶点着色器的当前矩阵。在存储器中,矩阵以行的主要顺序表示,因此以下矩阵:

|1 0 0 0 |
|0 1 0 0 |
|0 0 1 10|
|0 0 0 1 |

作为以下C++浮点数组发送到我的顶点着色器:

{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 10, 0, 0, 0, 1}

我相信我在数学上犯了一个新手错误。仅仅从模型中就可以发现明显的错误吗?在我的顶点着色器(GLSL)中,我使用以下代码行:

gl_Position = mvp * vec4(position, 1.0);

其中"mvp"是视频中看到的结果矩阵,位置包含正在处理的模型的当前顶点的位置(在模型空间中)。我不明白为什么会发生这些失真,这可能是我程序的另一个方面的错误吗(即我没有显示足够的代码)?

结果矩阵的必需换位。之前没有解决这个问题,因为位置超过了默认的远剪辑,所以模型被剪辑了。