我正试图让我的窗口中的一个视口显示茶壶的正交投影。
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
放在特定的地方,知道在哪里会很有帮助。
另外,因为我应该有几个视口,所以这些视口之后都会有正交投影吗?
Here's我的整个计划 代码snipet取自第192-204行
答案 0 :(得分:2)
我对你的课程并不完全了解,但鉴于我所看到的,我怀疑glOrtho是否会奏效。它是一个(不推荐使用的)函数,用于将固定函数管道中的当前矩阵乘以正交投影矩阵。但是,您的程序似乎使用着色器并构建自己的矩阵(作为现代OpenGL程序应该)。因此,如果您目前无法使用glOrtho,那么您真正需要做的就是将mat4 persp_proj
替换为包含您想要的正交投影的mat4 ortho_proj
。