32

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

4

1 回答 1

55

*运算符vec4.

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)

GLSL 语言规范在第5.10节向量和矩阵运算下说:

除了少数例外,操作是组件式的。通常,当操作符对向量或矩阵进行操作时,它以分量方式独立地对向量或矩阵的每个分量进行操作。[...] 例外是矩阵乘以向量、向量乘以矩阵和矩阵乘以矩阵。这些不按分量操作,而是执行正确的线性代数乘法。

于 2012-12-16T12:11:55.123 回答