1

我在glOrthof的互联网上看到了一些以前的帖子和解释,但我就是不明白。我正在观看 Youtube 上的斯坦福 OpenGL ES 课程,出现了以下代码:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, backingWidth, 0, backingHeight, -1, 1);

此代码在屏幕的左下角绘制了 1px x 1px 的图片。为什么它会这样做呢?我认为这段代码将从 (0,0) 获取图片并将其拉伸到整个屏幕,因为它将平面指定为从 0 到屏幕宽度以及从 0 到屏幕高度。有人可以尽可能简单地解释为什么它在左下角将其绘制为 1px x 1px。完整的源代码可以在标有“openGLtransforms.zip”的斯坦福网站上找到:

源代码网站

(这段代码出现的文件是ES1Renderer.m)

谢谢!

4

1 回答 1

0

不,glortho 将这些内容“映射”到屏幕中,使屏幕中心成为这些平面的中心。因此,如果在给定 glortho 调用的情况下将对象放置在 (0,0,0) 处,则该对象将被放置在场景的角落。使平面从 -backingWidth/2 变为 +backingWidth/2 和 -backingHeight/2 变为 backingHeight/2 可能更有用。你的对象有多大?你的 zFar 平面离 zNear 太近了,你的物体适合那个空间吗?

于 2012-12-28T05:31:58.110 回答