glScalef命令偏离中心

时间:2011-03-01 01:43:03

标签: c++ visual-studio opengl

嘿伙计们,我正在研究通过C ++和OpenGL创建的游戏。我有一个动画精灵我用作主角。当你按下'a'键时,他向后跑,当你按'd'键时,他向前跑。我正在使用glScalef命令在向后运行时翻转精灵。但是,当它被翻转时,镜像位置是精灵的边缘,而不是中心的位置,因此它看起来好像从一个位置跳到另一个位置。有什么想法要帮忙吗? 这就是这条线 glScalef(mirrorX,1.0,1.0);

如果它是1,它面向前方,或者如果它是-1,则它向后。 我也有一个关于我的问题的视频。 http://www.youtube.com/watch?v=SCi6sotj-94 质量非常糟糕,但是当他来回走动时你可以看到它。 在此先感谢你们

1 个答案:

答案 0 :(得分:3)

您的缩放不是从精灵的中心应用的。在您的视频中,您当前的代码是:

// apply the rotation around the center of the sprite
glTranslatef(centerX, centerY, 0)
glRotatef(theta, 0, 0, 1)
glTranslatef(-centerX, -centerY, 0)
glScalef(mirrorX, 1, 1)

你应该尝试从精灵的中心缩放:

// apply the rotation and scale from the center of the sprite
glTranslatef(centerX, centerY, 0)
glRotatef(theta, 0, 0, 1)
glScalef(mirrorX, 1, 1)
glTranslatef(-centerX, -centerY, 0)