glOrtho() 没有像我想象的那样工作

glOrtho() not working as I thought it would

本文关键字:工作 glOrtho      更新时间:2023-10-16

我正在尝试让窗口中的一个视口显示茶壶的正交投影。

mat4 view = translate (identity_mat4 (), vec3 (0.0, 0.0, -40.0));
mat4 persp_proj = perspective(50.0, (float)width/(float)height, 0.1, 100.0);
mat4 model = rotate_x_deg (identity_mat4 (), 40);
glViewport (0, 0, width / 2, height / 2);
glOrtho(0,400,0,300,0,1);
    glUniformMatrix4fv (proj_mat_location, 1, GL_FALSE, persp_proj.m);
glUniformMatrix4fv (view_mat_location, 1, GL_FALSE, view.m);
glUniformMatrix4fv (matrix_location, 1, GL_FALSE, model.m);
glDrawArrays (GL_TRIANGLES, 0, teapot_vertex_count);

这是代码中我想glOrtho用来绘制茶壶正交视图的部分。首先,我是否正确使用glOrtho?我想我是,但我没有得到我想要得到的东西,所以我怀疑我是。

为什么我所拥有的不起作用,我将如何修复它?

如果我应该把glOrtho放在一个特定的地方,知道在哪里会很有帮助。

另外,由于我应该有几个视口,之后所有视口都会有正交投影吗?

这是我的整个程序代码狙击取自第 192-204 行

我对你的程序没有完全了解,但鉴于我所看到的,我怀疑 glOrtho 根本无法正常工作。它是一个(已弃用的)函数,用于将固定函数管道中的当前矩阵乘以正交投影矩阵。但是,您的程序似乎使用着色器并构造自己的矩阵(就像现代 OpenGL 程序应该的那样)。因此,如果您目前拥有的 sans glOrtho 有效,您真正需要做的就是将mat4 persp_proj替换为包含所需正交投影的mat4 ortho_proj