Graphics 为什么属性数据是第四个字段1

Graphics 为什么属性数据是第四个字段1,graphics,vector,glsl,shader,Graphics,Vector,Glsl,Shader,简单的问题,希望是一个简单的答案 发送到顶点着色器的属性数据表示为4维向量。关于表示位置数据,字段通常被命名为X、Y、Z和W。我的问题涉及W 默认情况下,如果未提供任何信息,则属性包含: [ 0, 0, 0, 1 ] 为什么第四个字段的默认值是1,而不像其他字段那样是0?这是文体上的,数学上的,还是其他的推理 除了好奇,这个问题没有真正的原因。谢谢您的时间。因为这是它可能具有的最普遍的有用价值 如果您发送的是3元素颜色(RGB),那么让第四个组件自动填充1非常有用。类似地,如果要发送一个3矢量

简单的问题,希望是一个简单的答案

发送到顶点着色器的属性数据表示为4维向量。关于表示位置数据,字段通常被命名为
X
Y
Z
W
。我的问题涉及
W

默认情况下,如果未提供任何信息,则属性包含:

[ 0, 0, 0, 1 ]
为什么第四个字段的默认值是
1
,而不像其他字段那样是
0
?这是文体上的,数学上的,还是其他的推理


除了好奇,这个问题没有真正的原因。谢谢您的时间。

因为这是它可能具有的最普遍的有用价值

如果您发送的是3元素颜色(RGB),那么让第四个组件自动填充1非常有用。类似地,如果要发送一个3矢量位置,则第四个分量为1对于与4x4矩阵相乘非常有用


当您尝试将法线(或类似的方向,如切线和双切线)用于4x4矩阵时,唯一一次它是一种负担。

这是有道理的。谢谢你为我澄清,它真的很简单。为了澄清一点,对于位置向量,它正确地设置了第四个坐标,这样向量是均匀的。对于颜色,它将alpha通道设置为1,即完全不透明。@starruler:alpha并不表示不透明/透明。它意味着你想表达的意思。