在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,均相顶点坐标是“归一化”。为了比较两个顶点,则应该W值标准化为1.0。
思顶点(1,1,1,1)的。现在增加W值(W> 1.0)。标准化的位置缩放!并且它会起源。想想顶点(1,1,1,1)的。现在减小W值(<1.0)。归一化的位置是要无限点。
除了缩放顶点坐标,在W坐标是必要的,因为你必须乘以4×4矩阵(模型视图和/或投影矩阵)用4×1矩阵(顶点)。
当然,红皮书是定指南:
不隶属于 StackOverflow