レッドブックでリシェイプの例を見ると、私は通常のようなものを見つける:私はglLoadIdentity();
によってglMatrixMode(GL_PROJECTION);
が続い呼び出すと、射影行列がリセットされますが、glMatrixMode(GL_MODELVIEW)
は通常時と呼ばれる理由私は理解していないことを理解しなぜ、リシェイプコードはglMatrixMode(GL_MODELVIEW)で終了するのですか?
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
}
を形の終わり。
この特定の例では、glFrustum
は投影行列に影響します。 GL_MODELVIEW
は後で呼び出されるのはなぜですか? glMatrixMode(GL_MODELVIEW)
への最後の呼び出しが省略されている場合は違いがありますか?
glMatrixMode(GL_MODELVIEW)の最後の呼び出しが省略されている場合は違いがありますか? – andandandand
はい - 他の場所に置かない限り。基本的には、行列演算のほとんどはmodelview行列で行われます(投影行列はウィンドウのサイズ変更ごとに1回のみ実行されます)。そのため、モデルビュー行列スタックをアクティブな行列スタックにする必要があります行列呼び出し)。だからこそ、「他の行列スタックを変更してから、それをオンにし、あなたのものを行い、modelviewに戻す」傾向があります。 – Kos