Opengl 能否将数组作为输入传递给几何体着色器?

Opengl 能否将数组作为输入传递给几何体着色器?,opengl,geometry-shader,Opengl,Geometry Shader,能否将vec2数组作为输入传递给几何体着色器?如果是,语法是什么?从左到右读取GLSL中的数组vec2[3][6]被解读为“3个元素的数组,其中每个元素是6个元素的数组,其中每个元素是vec2” GS输入是阵列的;每个元素表示前一着色器阶段的单个输出。“单个输出”实际上可能是数组类型,这一事实与此无关 因此,如果您使用的输入/输出变量不在接口块中,则如下所示: //Vertex Shader out vec2[6] someVariable; //Geometry Shader in vec2

能否将vec2数组作为输入传递给几何体着色器?如果是,语法是什么?

从左到右读取GLSL中的数组
vec2[3][6]
被解读为“3个元素的数组,其中每个元素是6个元素的数组,其中每个元素是
vec2

GS输入是阵列的;每个元素表示前一着色器阶段的单个输出。“单个输出”实际上可能是数组类型,这一事实与此无关

因此,如果您使用的输入/输出变量不在接口块中,则如下所示:

//Vertex Shader
out vec2[6] someVariable;

//Geometry Shader
in vec2[][6] someVariable;
第一个索引是顶点索引

请注意,这可能需要GLSL 4.30或ARB_数组

如果使用传递数据,则数组将位于接口块本身的实例名称上:

//Vertex Shader
out SomeName
{
  vec2[6] someVariable;
};

//Geometry Shader
in SomeName
{
  vec2[6] someVariable;
} instanceName[];
由于该块有一个实例名,您可以在GLSL中将其称为
instanceName[index].someVariable


这可以在OpenGL 3.2中完成。

GLSL中的数组从左到右读取
vec2[3][6]
被解读为“3个元素的数组,其中每个元素是6个元素的数组,其中每个元素是
vec2

GS输入是阵列的;每个元素表示前一着色器阶段的单个输出。“单个输出”实际上可能是数组类型,这一事实与此无关

因此,如果您使用的输入/输出变量不在接口块中,则如下所示:

//Vertex Shader
out vec2[6] someVariable;

//Geometry Shader
in vec2[][6] someVariable;
第一个索引是顶点索引

请注意,这可能需要GLSL 4.30或ARB_数组

如果使用传递数据,则数组将位于接口块本身的实例名称上:

//Vertex Shader
out SomeName
{
  vec2[6] someVariable;
};

//Geometry Shader
in SomeName
{
  vec2[6] someVariable;
} instanceName[];
由于该块有一个实例名,您可以在GLSL中将其称为
instanceName[index].someVariable

这可以在OpenGL 3.2中完成