1

OpenGL Superbible を読んで、OpenGL の基本を学ぼうとしています。

私は第 4 章の最初にいますが、変換について質問があります。

まず、関連リンク: http://www.songho.ca/opengl/gl_transform.html

このパイプラインを(いわば)正しく理解している場合、私のコードで次のようなものがあれば

const float vertexPositions[] = {
0.75f, 0.75f, 0.0f, 1.0f,
0.75f, -0.75f, 0.0f, 1.0f,
-0.75f, -0.75f, 0.0f, 1.0f,
};

これらの座標は、いわゆるオブジェクト空間座標にあり、各値を[-1,1]範囲内の何かとして指定できます。

ビューモデルマトリックスを適用した後、各頂点座標は任意の数になり、それらの座標はいわゆる目の座標になります。

射影行列 (透視射影であっても) を適用した後、クリップ スペースに入りますが、数値は任意の値を持つことができます。

さて、ここが気になるポイントです。このページでは、各頂点x,y,z座標を 4 番目の値wで割っています。これは同次座標系を使用しているため存在し、分割後はx,y,z範囲内にあります[-1,1]

私の質問は、これらすべての変換後に の値wが十分であり、それで割った後x,y,zに範囲内の何かが得られることをどのように確認できる[-1,1]でしょうか?

4

1 に答える 1

2

… オブジェクト空間の座標で、各値を [-1,1] の範囲で指定できます。

オブジェクト座標の範囲に制限はありません。

私の質問は、これらすべての変換の後、w の値が十分であり、x、y、z をそれで除算した後、[-1,1] の範囲で何かが得られることをどのように確認できますか?

範囲 [-1, 1] は、変換後にビューポートに表示される範囲です。その範囲外のものはすべてビューポートの外にあるため、クリップされます。これについては何も保証されません。物が範囲内にある場合は表示され、そうでない場合はビューポート ウィンドウの外にあります。

于 2013-07-07T21:20:43.420 に答える