0

オブジェクトを回転させる方法がわかりません。現在、私はクワッドを持っており、それを 45 度の角度で表示できるようにしたいので、モデル ビューの投影マトリックスを設定しました。実際のコードではなくシェーダーでこれを行う必要があることはわかっています。後で変更しますが、ここにいくつかのコードを示します。

    bool bRotate = PVRShellGet(prefIsRotated) && PVRShellGet(prefFullScreen);
p_Matrix = PVRTMat4::PerspectiveFovRH(PVRT_PI / 6, (float) PVRShellGet(prefWidth) / (float) PVRShellGet(prefHeight), 4.0f, 1000.0f, PVRTMat4::OGL, bRotate);
PVRTVec3 view_From(2, 2, 0);
v_Matrix = PVRTMat4::LookAtRH(view_From, view_At, view_Up) * PVRTMat4::RotationX(45);
cam_Pos = view_From;

PVRTMat4 modelView, world, mMVP;
world = PVRTMat4::Identity();
modelView = v_Matrix * world;
mMVP = p_Matrix * modelView;

if(PVRShellGet(prefIsRotated) && PVRShellGet(prefFullScreen)) // If the screen is rotated
    mMVP = PVRTMat4::RotationZ(-1.57f);

/*
    Pass this matrix to the shader.
    The .m field of a PVRTMat4 contains the array of float used to
    communicate with OpenGL ES.
*/
glUniformMatrix4fv(m_ShaderProgram.auiLoc[eMVPMatrix], 1, GL_FALSE, mMVP.ptr());

mMVP マトリックスを回転させようとしましたが、効果がありません。また、モデルビューとv_matrix(ビューマトリックス)を回転させてみました。PVRTMat4::RotationX(45); という SDK によって提供される関数を使用しました。

4

1 に答える 1

0

PVRTMat4::scale(fx,fy,fz) 関数を使用して、必要な回転の 44 行列を取得できます。fx=45 と fy=0 と fz=0 を設定します。次に、返された行列を mMVP 行列に掛けます。

于 2014-02-13T09:35:05.397 に答える