我能够在iPhone的屏幕上绘制精灵,但是当我尝试旋转它时,我得到了一些奇怪的结果。它似乎是在y方向上拉伸精灵越多,精灵越接近指向y轴(90度和270度)。当指向x和-x轴(0和180度)时,它会正确显示。它基本上就像是剪切而不是旋转。以下是代码的基本要素(投影矩阵是ortho):
glPushMatrix();
glLoadIdentity();
glTranslatef( position.x, position.y, -1.0f );
glRotatef( rotation, 0.0f, 0.0f, 1.0f );
glScalef( halfSize.x, halfSize.y, 1.0f );
vertices[0] = 1.0f;
vertices[1] = 1.0f;
vertices[2] = 0.0f;
vertices[3] = 1.0f;
vertices[4] = -1.0f;
vertices[5] = 0.0f;
vertices[6] = -1.0f;
vertices[7] = 1.0f;
vertices[8] = 0.0f;
vertices[9] = -1.0f;
vertices[10] = -1.0f;
vertices[11] = 0.0f;
glVertexPointer( 3, GL_FLOAT, 0, vertices );
glDrawArrays( GL_TRIANGLE_STRIP, 0, 4 );
glPopMatrix();
有人可以向我解释如何解决这个问题吗?
halfsize只是精灵的x和y范围的一半;删除glScalef调用没有任何区别。
这是我的矩阵设置:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, 320, 480, 0, 0.01, 5);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
好的,希望这个屏幕截图能够展示正在发生的事情:
答案 0 :(得分:3)
如果您在x和y方向上缩放相同的量,那么您的投影会导致失真。
只是预感,但也许可以尝试在你的Ortho投影中交换320和480。 (如果交换了iPhone上的X和Y)