2017-11-21 6 views

답변

2

GLSL의 배열 배열은 왼쪽에서 오른쪽으로 읽습니다. vec2[3][6]은 "각 요소가 6 개 요소의 배열이고 각 요소가 vec2 인 3 개 요소의 배열"이라고 읽습니다.

GS 입력이 배열됩니다. 각 요소는 이전 쉐이더 스테이지의 단일 출력을 나타냅니다. "단일 출력"이 실제로 배열 유형 일 수 있다는 사실은 부적합합니다. 당신이 인터페이스 블록에없는 입/출력 변수를 사용하는 경우

그래서,이 같을 것이다 :

//Vertex Shader 
out vec2[6] someVariable; 

//Geometry Shader 
in vec2[][6] someVariable; 

첫 번째 인덱스는 정점 인덱스입니다.

GLSL 4.30 또는 ARB_arrays_of_arrays가 필요할 수 있습니다. 블록은 인스턴스 이름을 가지고 있기 때문에

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

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

, 당신은 instanceName[index].someVariable으로 GLSL에서 참조 것 :

데이터를 전달하는 interface blocks를 사용하는 경우는, 그 배열은 인터페이스 블록 자체의 인스턴스 이름에 간다 .

OpenGL 3.2에서이 작업을 수행 할 수 있습니다.