我想在我的窗口中的一个视口显示一个茶壶的正投影。glOrtho()不工作,因为我认为它会
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我的整个程序 一小段代码片段是从线192-204
您似乎在着色器和固定功能管线之间混淆起来。使用glOrtho和glUniformMatrix4fv是没有意义的。使用透视投影和正射投影也是没有意义的,你需要一个或另一个。 –
当然不是。 'glOrtho(...)'将“当前”矩阵乘以一个正交投影矩阵。由于你使用着色器和自己的矩阵制服,所以“当前”矩阵的概念是没有意义的。更不用说在GL3核心环境中,没有矩阵堆栈,所以'glOrtho(...)'是一个无效函数。 –
-1,*完整*代码在*问题中,而不是在pastebin中。 – genpfault