glsl中的显式或隐式vec4

时间:2016-08-05 12:16:57

标签: c++ opengl glsl opengl-3

我找到了一些有趣的东西,我想了解它。

使用 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;

1 个答案:

答案 0 :(得分:3)

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

相关问题