如何在opengl中缩放和旋转纹理?

时间:2013-04-06 09:42:19

标签: opengl-es

我正在使用opengl ES进行我的iphone游戏。要缩放和旋转我的对象,我这样做:    glScalef(scaleX,scaleY,1);    glRotatef(rotationZ,0.0f,0.0f,1.0f)

我正在使用带有orthof(-1,1,-1,1,-1,1)的正射屏幕。我的问题是当我旋转物体时,图像会变形。我理解为什么会发生这种情况,因为我正在缩放到屏幕大小,所以旋转它会改变图像大小。 我该怎么做才能防止它歪斜。

glViewport(0,0, (GLint)screenWidth, (GLint)screenHeight);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrthof(-1,1,-1,1,-1,1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glPushMatrix();

glTranslatef(positionX, positionY,0.0f);

glScalef(scaleX , scaleY ,1);

glRotatef(rotationZ, 0.0f, 0.0f, 1.0f);

1 个答案:

答案 0 :(得分:0)

使用与屏幕宽高比匹配的正投影,而不是仅发送一堆投影。除非你有一个方形屏幕,你的左/右不应该与你的上/下相同,否则你会看到歪斜。