0
は、私はそれが次のコードでセンターの周りにオブジェクトを回転しようとしています:OpenGL ESの回転オブジェクト - 正しい順序で変換を適用しますか? iPhone
-(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();
}
問題は、オブジェクトが今、画面の周りの広い円形に回転していることです。
私の質問には、自分のコードにマトリックスを適用する正しい順序は何ですか?
ありがとうございます。
?行列(matricesArray)には位置と回転のデータも含まれていますか? – GuybrushThreepwood
glTranslatefの前にglRotatefする – ggfela
まだ動作しません - 私はglmultmatrixコマンドが問題だと思います。 – GuybrushThreepwood