2012-03-28 3 views
0

私が異なっている前と後の値OpenGLのマトリックススタック

float before[16]; 
float during[16]; 
float after[16]; 
glGetFloatv(GL_MODELVIEW_MATRIX, before); 
glPushMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, during); 
glPopMatrix(); 
glGetFloatv(GL_MODELVIEW_MATRIX, after); 

を呼び出した場合。私は何かを見逃していましたが、私はこれらの機能のどれもマトリックスを修正すべきではないと考えていました。それは前と同じ時のように、ポップは犯人であるように見えるでしょう。

+1

これは正しく聞こえません。前/後の値は何ですか?あなたはそれらを認識していますか?他の何かが間違っている場合にglGetErrorをチェックする私の唯一の他の考えだ。 – Tim

+0

実際に検索された3つの行列のすべての値は、このコードと同じである必要があります。とにかく、マトリックススタックは廃止され、OpenGL-3以降から完全に削除されました。 – datenwolf

+0

"前と後の値が異なります。"彼らはどう違っていますか?それらに対して '=='テストを行っていますか、または適切な浮動小数点の等価性テストを行っていますか?ヤオールの時間を無駄にして申し訳ありません –

答えて

0

と同じにする必要があります。 glPushMatrixは現在の行列のコピーをプッシュし、その後、前の行は影響を受けてはならず、glPopMatrixの後に再び現行になります。

glGetErrorを確認してください。行列のスタックがオーバーフローした場合、何か悪いことが起こる可能性があります。