如何在openGL中调整窗口大小

时间:2012-08-14 17:20:48

标签: iphone objective-c opengl-es scale viewport

我在OpenGL中制作游戏。我有一个视口使用glOrthof()乘以变换矩阵。我差不多完成了这个游戏,但是我已经做了最后一分钟决定将所有内容缩小一点以提高可见度。我已经包含了一个图表,描述了我的屏幕当前是如何设置的(黑匣子)以及我想如何缩放它(红色框)。

window

给出黑框的宽度和高度,以及图中的xy,是否可以调整视口,或者可以进行某种矩阵乘法来增加窗口大小

我不想实际缩放游戏,我只想增加窗口的大小(我猜最终会缩放游戏,但我想保留相对比例)。

现在,这就是我设置观点的方式:

glViewport(0, 0, backingWidth, backingHeight);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-backingWidth/2.0, backingWidth/2.0, -backingHeight/2.0, backingHeight/2.0, -1.0f, 1.0f);

glMatrixMode(GL_MODELVIEW);

其中backingWidthbackingHeight分别是黑匣子的宽度和高度。

我是OpenGL的新手,所以非常感谢所有的帮助。

1 个答案:

答案 0 :(得分:1)

如果要在同一视口大小中查看更多区域,可以增加给予glOrthof的值。

如果你将glOrthof的上/左/下/右乘以两倍大,那么你会看到每个方向的两倍,并且每个方向的一切都将是原始尺寸的一半,因为你要放相同数量的像素内容的两倍。

您可以将glOrthof乘以您想要的任何比例因子。

==编辑==

抱歉,我注意到您只想向右缩放X,而不是向中心缩放。在这种情况下,保留left属性相同,只需将更多内容添加到glOrthof的right值。