你可以将一个vec2数组传递给几何着色器作为输入吗?如果是这样的语法是什么?
答案 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中完成。