OpenGL - 旋转时平铺地图拉伸,除了0度和180度

时间:2018-02-15 21:38:48

标签: c++ opengl graphics

我有一张由128x128图像拼贴组成的地图并排拼凑在一起。我们的向导站在一个位置,地图根据向导面向的方向旋转,其理想功能由以下垃圾MS Paint图表说明(请注意:NEWS定向标签实际上不是地图的一部分) ):

面向北方(理想和实际)

Facing North (Ideal AND Actual)

面向东方(理想,非实际)

Facing East (Ideal NOT Actual)

然而,尽管它面向真北和真南的向导工作正常,但地图已被拉伸"并且在其他旋转角度扭曲,当巫师面向真正的东方或真正的西方时问题最明显:

面向东方(实际,非理想)

Facing East (Actual NOT Ideal)

相关代码的伪代码如下:

   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
   glOrtho(leftPosition,rightPosition,botPosition,topPosition,-1,1);
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();
   glRotatef(direction,0,0,1);
   glTranslatef(eastwestoffset,northsouthoffset,0);
   mapTiles();
   glTranslatef(-eastwestoffset,-northsouthoffset,0);
   glPopMatrix();
   glMatrixMode(GL_PROJECTION);
   glPopMatrix();
   glMatrixMode(GL_MODELVIEW);

代码中的任何内容都会跳到任何人身上,因为当面向北方和南方时地图正常工作但在面向其他方向时拉伸时会拉伸吗?

0 个答案:

没有答案