OpenGL ES中的旋转对象 - 应用转换的正确顺序?苹果手机

时间:2012-02-22 14:32:58

标签: iphone objective-c opengl-es 3d rotation

我正在尝试使用以下代码围绕它的中心旋转对象:

-(void)render
{
// clear the matrix
glPushMatrix();
glLoadIdentity();

// move to my position

//scale
glScalef(0.000015, 0.000015, 0.000015);

xRotation =280.0;
zRotation =1.0;
yRotation +=0.5;

glRotatef(xRotation, 1.0f, 0.0f, 0.0f);
glRotatef(yRotation, 0.0f, 1.0, 0.0f);
glRotatef(zRotation, 0.0f, 0.0f, 1.0f);

[mesh render];

//restore the matrix
glPopMatrix();

}

此代码正常工作,对象围绕中心旋转。问题是我还有一个矩阵,它定义了名为matricesArray的场景中对象的起始位置。我在我的代码中添加了一个新行,以乘以此矩阵并将对象放在正确的起始位置:

-(void)render
{
// clear the matrix
glPushMatrix();
glLoadIdentity();

// move to my position

//xRotation = 280;

//scale
glScalef(0.000015, 0.000015, 0.000015);

xRotation =280.0;
zRotation =1.0;
yRotation +=0.5;

glRotatef(xRotation, 1.0f, 0.0f, 0.0f);
glRotatef(yRotation, 0.0f, 1.0, 0.0f);
glRotatef(zRotation, 0.0f, 0.0f, 1.0f);

glMultMatrixf(matricesArray);  //This is the line I have added to apply the matrix.

[mesh render];

//restore the matrix
glPopMatrix();


}

问题是对象现在围绕屏幕旋转一圈。

我的问题是在我的代码中应用矩阵的正确顺序是什么?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您需要先旋转然后翻译到您想要的位置。