vec2 배열을 입력으로 지오메트리 셰이더에 전달할 수 있습니까? 그렇다면 구문은 무엇입니까?배열을 입력으로 지오메트리 셰이더에 전달할 수 있습니까?
0
A
답변
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에서이 작업을 수행 할 수 있습니다.