-2

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

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 行

4

1 回答 1

2

我不完全了解您的程序,但鉴于我所看到的,我怀疑 glOrtho 是否会起作用。它是一个(已弃用)函数,用于将固定函数管道中的当前矩阵乘以正交投影矩阵。但是,您的程序似乎使用着色器并构建自己的矩阵(现代 OpenGL 程序应该如此)。因此,如果您目前拥有的 sans glOrtho 有效,那么您真正需要做的就是将您的替换mat4 persp_projmat4 ortho_proj包含您想要的正交投影的。

于 2013-10-17T21:31:43.247 回答