您可以将数组作为输入传递给几何着色器吗?

时间:2017-11-21 03:05:44

标签: opengl geometry-shader

你可以将一个vec2数组传递给几何着色器作为输入吗?如果是这样的语法是什么?

1 个答案:

答案 0 :(得分: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_arrays_of_arrays。

如果使用interface blocks传递数据,那么数组将继承接口块本身的实例名称:

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

//Geometry Shader
in SomeName
{
  vec2[6] someVariable;
} instanceName[];

由于该块具有实例名称,因此您将在GLSL中将其称为instanceName[index].someVariable

这可以在OpenGL 3.2中完成。