私は OpenGL を学んでいて、座標系の明確な定義を見つけるのに苦労しています。
ビューポートに表示される値の数値範囲をどのように判断できますか?
私は OpenGL を学んでいて、座標系の明確な定義を見つけるのに苦労しています。
ビューポートに表示される値の数値範囲をどのように判断できますか?
-1.0 ~ +1.0 (すべての変換が適用された後)。
この情報は、やや回りくどい方法でglViewport
ドキュメントに埋め込まれています。MSDN 版のドキュメントを選択するのは、他のオンライン ソースが HTML への変換中に数式を台無しにしているからです (これは正しい数式ですが、認識できません)。
適切なスケーリングと変換係数を適用することで、必要な変換前の座標系を取得できます。 glOrtho
GL 1.x - 2.x ではこれが簡単になります。OpenGL 3.x では、頂点シェーダーを使用して変換を行います。
表示される頂点値の範囲は、ModelViewとProjectionの 2 つの変換行列によって管理されます。ModelViewマトリックスは、演算の種類で構築されglRotate
、射影マトリックスは、またはで作成されます。glTranslate
glOrtho
glPerspective
gluLookAt
頂点 V は、以下の変換を使用してビューポート座標に変換され、非表示部分はターゲット空間でカリングされます (すべての軸で [-1,1])。
V'' = Projection * ModelView * V
ただしglOrtho
、glPerspective
モデルビュー空間で与えられた入力として可視範囲を取得します。これらの範囲は、変換された頂点と同等です。
V' = ModelView * V
単位行列を として使用している場合、頂点値をまたはModelView
に与えられた値と比較できます。glOrtho
glPerspective