OpenGL がウィンドウへのビューポート変換をどのように処理するのか疑問に思っていました。
私が理解しているように、ビューポート変換は、そのシーンにビューポート変換を適用することにより、OpenGL ウィンドウにシーンを拡張することです。
私が間違っている場合は、私を修正してください。
OpenGL がウィンドウへのビューポート変換をどのように処理するのか疑問に思っていました。
私が理解しているように、ビューポート変換は、そのシーンにビューポート変換を適用することにより、OpenGL ウィンドウにシーンを拡張することです。
私が間違っている場合は、私を修正してください。
クリッピングとパースペクティブ分割の後、残りのすべての (表示されている) 頂点座標 x、y、z は -1 から +1 の間です。これらは正規化されたデバイス座標と呼ばれます。これらは、適切なスケールとシフト (ビューポート変換) によってデバイス座標にマッピングされます。
たとえば、ビューポートのサイズが 1024x768 で 16 ビットの深度バッファがあり、原点が (0,0) の場合、ポイントは (512,384,2^14) でスケーリングされ、(512,384,2^14) でシフトされます。デバイスの適切なピクセル値と深度値を生成します。
http://www.songho.ca/opengl/gl_transform.html :
ウィンドウ座標(スクリーン座標)
これは、ビューポート変換に正規化されたデバイス座標 (NDC) を適用することによって得られます。NDC は、レンダリング画面に収まるようにスケーリングおよび変換されます。ウィンドウ座標は最終的に OpenGL パイプラインのレート化プロセスに渡され、フラグメントになります。glViewport() コマンドは、最終的な画像がマップされるレンダリング領域の長方形を定義するために使用されます。そして、glDepthRange() を使用して、ウィンドウ座標の z 値を決定します。ウィンドウ座標は、上記の 2 つの関数の指定されたパラメーターを使用して計算されます。
リンクをたどると、数学の詳細が表示されます。