Glsl 理解Vulkan着色器有困难

Glsl 理解Vulkan着色器有困难,glsl,vulkan,Glsl,Vulkan,从: 问题1:这意味着什么 out gl_PerVertex { vec4 gl_Position; }; 问题2:如何解释语法vec2位置[3]=vec2[](…)?要初始化数组,语法不应该是 vec2 positions[3] = { vec2(0.0, -0.5), vec2(0.5, 0.5), vec2(-0.5, 0.5) }; 是这个着色器特定的语法,还是可以将< >代码> ARAYTYTY[](…)> /代码>用作C++中的构造器?< /P>

从:

问题1:这意味着什么

out gl_PerVertex {
    vec4 gl_Position;
};
问题2:如何解释语法
vec2位置[3]=vec2[](…)
?要初始化数组,语法不应该是

vec2 positions[3] = {
    vec2(0.0, -0.5),
    vec2(0.5, 0.5),
    vec2(-0.5, 0.5)
};

是这个着色器特定的语法,还是可以将< >代码> ARAYTYTY[](…)> /代码>用作C++中的构造器?< /P> 问题1:这意味着什么

out gl_PerVertex {
    vec4 gl_Position;
};
这个

这是一个很好的例子。(见下文)


问题2:如何解释vec2 positions=vec2的语法?要初始化数组,语法不应该是

没有


可以使用数组构造函数语法构造数组。在这种情况下 类型还包含[]数组表示法:

const float array[3] = float[3](2.5, 7.0, 1.5);

见:

如果初始值设定项是用大括号括起来的初始值设定项列表,则声明的变量必须是 向量、矩阵、数组或结构

int i = { 1 }; // illegal, i is not a composite 

以下所有声明都会导致编译时错误

float a[2] = { 3.4, 4.2, 5.0 }; // illegal

如果为未指定大小的数组提供了初始值设定项(任何一种形式),则数组的大小由 初始值设定项中顶级(非嵌套)初始值设定项的数量。以下所有声明都将创建 使用五个元素显式调整数组大小:

float a[] = float[](3.4, 4.2, 5.0, 5.2, 1.1);
float b[] = { 3.4, 4.2, 5.0, 5.2, 1.1 };
float c[] = a; // c is explicitly size 5
float d[5] = b; // means the same thing
float a[] = float[](3.4, 4.2, 5.0, 5.2, 1.1);
float b[] = { 3.4, 4.2, 5.0, 5.2, 1.1 };
float c[] = a; // c is explicitly size 5
float d[5] = b; // means the same thing