1

誰かが次の OpenGL 関数のそれぞれの機能を説明できますか?

glMatrixMode(GL_PROJECTION);
glLoadIdentity(); 
glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
4

1 に答える 1

0

OpenGL はステート マシンとして機能することに注意してください。

glMatrixMode(GL_PROJECTION);

現在の行列を射影行列に設定します。つまり、アクティブな行列の状態が射影行列であるため、後続のすべての行列呼び出しは射影行列に影響します。射影行列は、物の見方 (カメラの設定方法) を扱います。

glLoadIdentity(); 

現在の行列の値を単位行列に設定します。現在の行列は射影行列です。

glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);

OpenGlのドキュメントから:「現在の行列に正射行列を掛ける」。したがって、射影行列 (カメラを考えてください) は、正射投影法を示すように変換されます。

glMatrixMode(GL_MODELVIEW);

現在のマトリックスをモデル ビュー マトリックスに設定します。モデル ビュー マトリックスは、オブジェクトの表示方法を扱います。モデル ビューの変換により、オブジェクトが回転または移動する可能性があります。

したがって、基本的に最初の 3 行でカメラを設定し、最後の 2 行で現在のマトリックスをモデル ビュー マトリックスにします。これは、プログラムがカメラの設定を完了し、オブジェクトを表示する必要があるためです。OpenGL には実際のカメラはありません。カメラのアイデアは、よくあるアナロジーにすぎません。

于 2012-08-30T15:52:33.677 に答える