void main(void)
{
vec4 clipCoord = glModelViewProjectionmatrix * gl_Vertex;
gl_Position = clipCoord;
gl_FrontColor = gl_Color;
vec3 ndc = clipCoord.xyz / clipCoord.w;
したがって、clipCoord
標準の固定パイプライン変換を行っているだけです。で割る理由w
と、これから何を得るのですか?
void main(void)
{
vec4 clipCoord = glModelViewProjectionmatrix * gl_Vertex;
gl_Position = clipCoord;
gl_FrontColor = gl_Color;
vec3 ndc = clipCoord.xyz / clipCoord.w;
したがって、clipCoord
標準の固定パイプライン変換を行っているだけです。で割る理由w
と、これから何を得るのですか?
W は 3 次元頂点の 4 番目の座標です。この頂点は同次頂点座標と呼ばれます。
簡単に言えば、W 成分は他のベクトル成分を分割する要因です。W が 1.0 の場合、均一な頂点座標は「正規化」されます。2 つの頂点を比較するには、W 値を 1.0 に正規化する必要があります。
頂点 (1,1,1,1) について考えてみましょう。ここで、W 値を増やします (w > 1.0)。正規化された位置がスケーリングされています! そして原点に向かいます。頂点 (1,1,1,1) について考えてみましょう。ここで、W 値を減らします (W < 1.0)。正規化された位置は無限ポイントに向かっています。
頂点座標のスケーリングとは別に、4x4 マトリックス (モデル ビューおよび/または投影マトリックス) を 4x1 マトリックス (頂点) で乗算する必要があるため、W 座標が必要です。
もちろん、レッド ブックは明確なガイドです。