OpenGLの頂点シェーダでは、wは何で、なぜ私はそれで割るのですか?
-
19-09-2019 - |
質問
void main(void)
{
vec4 clipCoord = glModelViewProjectionmatrix * gl_Vertex;
gl_Position = clipCoord;
gl_FrontColor = gl_Color;
vec3 ndc = clipCoord.xyz / clipCoord.w;
だから、clipCoord
は、標準の固定パイプラインの変換を行っています。
なぜ私はw
で割るか、と私はここから何を得るのですか?
解決
Wは、第四の三次元頂点の座標です。この頂点が均質頂点座標と呼ばれている。
いくつかの単語では、Wコンポーネントは、他のベクトル成分を分割する因子です。 Wが1.0である場合、均質な頂点座標は、「正規化」されています。 2つの頂点を比較するには、あなたが1.0にW値を正規化する必要があります。
頂点(1,1,1,1)と考えてください。今(1.0> w)のW値を増やします。正規化された位置は、スケーリングされました!それが原点になるだろう。頂点(1,1,1,1)と考えてください。今(W <1.0)W値を下げます。正規化された位置が無限遠になるだろう。
別に頂点座標をスケーリングから、W座標あなたは4x1の行列(頂点)と4×4行列(モデルビューおよび/または投影行列)を乗算しなければならないので必要である。
もちろん、レッドブックは、明確なガイドです。
所属していません StackOverflow