矢量如何在着色器语言中成倍增加?

时间:2012-12-16 12:05:48

标签: opengl

gl_FragColor = v1 * v2,我无法真正得到它是​​如何相乘的,似乎参考文献给出了向量乘法矩阵的解释。
ps:v1v2的类型都是vec4

1 个答案:

答案 0 :(得分:36)

*运算符适用于vec4等向量的component-wise

vec4 a = vec4(1.0, 2.0, 3.0, 4.0);
vec4 b = vec4(0.1, 0.2, 0.3, 0.4);
vec4 c = a * b; // vec4(0.1, 0.4, 0.9, 1.6)

{em> 5.10矢量和矩阵操作部分下的GLSL Language Specification说明了:

  

除少数例外情况外,操作是按组件划分的。通常,当一个   运算符在向量或矩阵上运算,它独立运行   在分量方面,在矢量或矩阵的每个分量上   时尚。 [...]例外是矩阵乘以向量,向量   乘以矩阵,矩阵乘以矩阵。这些没有   按组件运行,而是执行正确的线性运算   代数乘法。