2012-10-12 46 views
0

我了解frustrum观看系统背后的概念;它的形状像一个金字塔,随着物体靠近中心,它们变得更小,直到它们最终被剪掉。然而,当使用OpenGL(正视:我不使用不建议使用的功能)的投影时,您设置了如下的坐标系:设置坐标系进行透视查看?

ortho示例(左,右,下,上,近,远);

这一切都很好,但是当谈到透视时,事情会变得有点奇怪。

perspectiveExample(field_of_view_y,aspect,near,far);

我该如何设置一个像这样的功能的坐标系?它不会让我指定一个左,右,底部,顶部等我知道透视仅仅是一个frustrum投影的变化...

+0

事实上,它并不像正交投影那么容易。我不记得数学,但你可以看看GLU图书馆的gluPerspective命令。它简化了很多建立透视投影。如果你真的想,我可以对数学做一些研究并在这里发布(他们并不那么难)。 –

+0

我建议看看GLM - OpenGL数学库。它有构建所有这些的例程 - 并且面向GLSL(例如,不推荐使用的特性;))http://glm.g-truc.net/ –

+0

我希望我可以,但我使用C. I尽管使用类似的库,所以如果你能指向我类似的GLM方法。 @ViníciusGobboA.deOliveira:我从一个单独的库中使用该函数的等价物,但我不明白如何通过该命令设置坐标系?我知道它在内部使用frustrum。 – Shokwav

回答

0

代码找到here应该为你清理的东西。

Z轴被认为是投影的中心。 tan(fov_y)* near会给你顶部(和负数,底部)。方面是宽度与高度的比率,所以最重要的是乘以方面给你正确的和负面的。