我在glOrthof的互联网上看到了一些以前的帖子和解释,但我只是不明白。我正在观看Youtube上的Stanford OpenGL ES课程,并出现了以下代码:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, backingWidth, 0, backingHeight, -1, 1);
此代码在屏幕左下角绘制1px xpx的图片。为什么会这样做呢?我认为这段代码会从(0,0)中获取图片并将其拉伸到整个屏幕,因为它指定的平面从0到屏幕宽度,0到屏幕高度。有人可以尽可能简单地解释为什么它在左下角以1px 1px的形式绘制它。完整的源代码可以在斯坦福网站上找到,标记为“openGLtransforms.zip”:
(此代码出现的文件是ES1Renderer.m)
谢谢!
答案 0 :(得分:0)
不,glortho将“内部”内容“映射”到屏幕中,使屏幕中心成为这些平面的中心。因此,如果您在给出glortho调用的情况下将对象放在(0,0,0)处,则该对象将被放置在场景的角落。将平面从-backingWidth / 2转到+ backingWidth / 2和-backingHeight / 2到backingHeight / 2可能更有用。你的对象有多大?你的zFar平面太靠近zNear,你的物体是否适合那个空间?