我有一个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
调用的参数,但没有任何帮助。有人可以帮助我,或解释我做错了什么?提前致谢。 :)
答案 0 :(得分:2)
试试这个:
GLfloat aspect=width/height;
glOrthof(-aspect, aspect, -1.0, 1.0, -1.0f, 1.0f);