【发布时间】:2011-05-22 19:20:45
【问题描述】:
我有一个横向运行的 iOS 应用程序(始终),并使用 OpenGL 进行绘图。我的绘图方法中有这段代码:
GLfloat width = self.frame.size.width; // 480
GLfloat height = self.frame.size.height; // 320
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-width / 2, width / 2, -height / 2, height / 2, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(160.0f, 240.0f, 0.0f);
glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
glScalef(1.0f, -1.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glTranslatef(self.player.x, self.player.y, 0.0f);
其中self.player.x 和self.player.y 是GLfloat 变量,范围从-3.0f 到3.0f。
但是,我看到的只是一个蓝色十字:
我使用glOrthof 使OpenGL 使用正确的纵横比。当我评论 glOrthof 调用时,我得到了这个结果(浅蓝色线应该形成正方形,而不是矩形):
我尝试了一切,从交换宽度和高度,更改glOrthof 调用的参数,但没有任何帮助。有人可以帮助我,或者解释我做错了什么吗?提前致谢。 :)
【问题讨论】:
标签: c ios opengl-es landscape aspect-ratio