Task
Find the sum of three vectors in the program (
blueChannel
,redChannel
,alphaChannel
), and print the result usinggl_FragColor
variable.
求三个向量的和(blueChannel
,redChannel
,alphaChannel
),并使用变量gl_FragColor
输出结果
Theory
在 GLSL 中,vec 是一种用于定义向量的数据类型。向量用于表示以一维、二维、三维或四维的标量值集合(例如浮点数、整数等)。vec数据类型后面跟着一个数字,用于指定向量的维数。
GLSL 中常见的 vec 类型:
- vec2:表示二维向量。
- vec3:表示三维向量。
- vec4:表示四维向量。
您可以在 GLSL 中使用向量来表示位置、方向、颜色、纹理坐标等。向量值可以像标量值一样应用相同的数学运算符。这些运算符对向量的每个元素执行分量运算。但是,要使这些运算符在向量上起作用,两个向量必须具有相同数量的元素。
在 GLSL 中使用 vec 的示例:
定义 vec 变量:
glsl
vec3 position = vec3(1.0, 2.0, 3.0);
访问 vec 变量的组成部分:
glsl
float x = position.x; // accesses the x component of the vec3 position
float y = position.y; // accesses the y component of the vec3 position
float z = position.z; // accesses the z component of the vec3 position
对 vec 变量执行操作:
glsl
vec2 a = vec2(1.0, 2.0);
vec2 b = vec2(3.0, 4.0);
vec2 sum = a + b; // vector addition
vec2 difference = a - b; // vector subtraction
vec2 scaled = a * 2.0; // scalar multiplication
Answer
glsl
void main() {
vec4 blueChannel = vec4(0.0, 0.0, 0.75, 0.0);
vec4 redChannel = vec4(0.5, 0.0, 0.0, 0.0);
vec4 alphaChannel = vec4(0.0, 0.0, 0.0, 1.0);
gl_FragColor = blueChannel + redChannel + alphaChannel;
}