glOrthof和glViewPort之间的区别

14

在OpenGL-ES中,我对设置以下内容的差异感到困惑:

glOrthof()  
glViewPort()
GLU.gluOrtho2D()

使用它各自的参数。我认为这一切都是将您可以看到的部分设置为指定的坐标(宽度、高度)。我应该使用哪一个?

1个回答

23

glViewport确定OpenGL绘制的窗口部分。这可以是整个窗口,也可以是子部分(考虑控制台游戏的“分屏”模式-每个玩家都有一个不同的视口)。

glOrthof对当前矩阵应用正交投影,通常在此调用之前设置为投影矩阵。将投影矩阵与模型视图相结合,产生一个将OpenGL坐标转换为屏幕坐标的矩阵。

gluOrtho2D,

这相当于使用near = -1和far = 1调用glOrtho。

我建议这个页面以获取有关OpenGL中查看和转换工作原理的更多详细信息。

你应该使用哪个?视口和正交投影是不同的问题,因此你需要分别调用它们。 glOrthof和gluOrtho2D大致等效;了解差异并使用其中之一。


关于分屏模式,这是否意味着glViewport就像是指向3D世界中的某个位置?顺便说一下,我会在找到时间时学习链接。谢谢! - user717572
如果我比如说要在世界/地图上滚动,是要翻译所有的对象还是更改glViewport或glOrtho投影?(抱歉不能再编辑了) - user717572
视口与3D世界无关,而与最终屏幕坐标有关。要在3D空间中移动物体,需要在模型视图矩阵处于活动状态时进行glRotate/glTranslate操作。一定要查看该链接。 - luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接