2012-05-10 8 views
0

glRotateの後に座標を決定しようとしています。openGL:glrotateの後に座標を取得

と仮定我々は最初

View.x = 0; 
View.y = 0; 
View.z = 10.0f; 

であり、私たちはglRotateが

がどのように私は新しい更新された座標を得るのですか?

View.x = ?; 
View.y = ?; 
View.z = ?; 

これは(私が間違って何を持っているのですか?)動作していないよう:

glRotatef(angle, x, y, z); 

    GLfloat theMatrix[16]; 
    glGetFloatv(GL_MODELVIEW_MATRIX, theMatrix); 

    viewX = View.x * theMatrix[0] + View.y * theMatrix[4] + View.z * theMatrix[8]; 
    viewY = View.x * theMatrix[1] + View.y * theMatrix[5] + View.z * theMatrix[9]; 
    viewZ = View.x * theMatrix[2] + View.y * theMatrix[6] + View.z * theMatrix[10]; 
+3

を変換するようないくつかのより高度なものを使用することができますが回転行列の聞いたことがありますか?ウィキペディアでそれを見て、あなたはローテーションの結果が何であるかを理解するでしょう。また、特定の軸 '[ex、ey、ez]'を使用している 'glRotate(angle、ex、ey、ez)'回転を追加してください。 – ja72

答えて

0

glRotateは、現在のモデルビュー行列を変更...しかし、すべての変換はそう、OpenGLパイプライン内で実行されますあなたは簡単に更新された結果を得ることができません。

最も簡単な方法は、回転行列で頂点データを掛けることです。 glmライブラリやその他のライブラリを使用することも、ベクトル/頂点変換のための独自のコードを作成することもできます。あなたが描きたいすべての頂点の更新された値を取得したい場合

、あなたはフィードバック

+0

"GPUで実行された" Incorrect。変換はOpenGLパイプラインで実行されます。パイプラインはGPU上にあるとは限りません。古いハードウェアでは、ラスタライズ段階までCPU上で実行されます。 – SigTerm

+0

右私は物事を単純化したいと思っています... – fen

関連する問題