glsl 中的显式或隐式 vec4

explicit or implicit vec4 in glsl

我发现了一些有趣的东西,我想了解它。

使用 GLSL #version 330

gl_Position 的类型是 vec4

这些行编译正常:

gl_Position = vec4(0, 0, 0, 0);
gl_Position = vec4(vec3(0, 0, 0), 0);
gl_Position = vec4(vec2(0, 0), vec2(0, 0));
...

不知何故:

gl_Position = (vec2(0, 0), vec2(0, 0));

加注:

error C1035: assignment of incompatible types

编译器能够在不引发语法错误的情况下解析 (vec2(0, 0), vec2(0, 0))。我想知道这个说法是什么意思,我相信它是正确的并且与 vec4.

有不同的类型

问题:(vec2(0, 0), vec2(0, 0))GLSL中是什么意思?

编辑:

编译:

 float x = (0.0, 1.0, 1.0, 2.0, 3.0, 5.0, 8.0);

语法错误:

 float x = 0.0, 1.0, 1.0, 2.0, 3.0, 5.0, 8.0;

您使用 comma operator,创建一个 vec2,然后创建另一个 vec2,最后一个 vec2 是表达式的结果。