基本上我所理解的是:当物体位于XY平面中时,您希望具有与正投影相同的图像的透视矩阵。
所以,让我们开始: 你想画你的飞机在XY平面和你有gluOrtho2D(-w, w, -h, h);
(非对称正投影是有点困难,如果你需要它,那么说的话)。 你现在需要做的是:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(2 * atan(h/2), w/h, 1, 3);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -2);
我在这里做是匹配的投影视锥在XY平面,在正投影是可见的部分的中心。
就拿投影截锥和一些数学的图表,你可以自己做:)
正如一个提醒,我会离开我的回答这个老问题在这里。
要么你有正投影或透视投影。你必须决定一个。 在任何轴上旋转都不会获得透视。
为什么要改变整个程序来改变投影模式?
一个可能的解决方案: 我认为老GL不同的矩阵模式等:
glMatrixMode(GL_PROJECTION); //switch to projection matrix mode
glPushMatrix(); //push the old matrix
glLoadIdentity();
//apply the perspective projection
//do your rendering
glPopMatrix(); //pop the old matrix
随着新GL方案,你将不得不这样做极本在你自己的,但它应该很容易虽然。
你为什么要这样做? – Nobody 2012-03-06 16:44:17
你的总结听起来与你之前对我的说明有很大的不同。 – Nobody 2012-03-07 09:32:01
前面的注意事项可能有点不清楚,但总结归结的是总结。我希望在一个大型程序中获得透视投影,该程序对所有渲染使用正交投影,同时更改最小代码量。自从我上一次参加计算机视觉课程之后的几年,所以我非常生疏。 – Leo 2012-03-07 10:24:13