2017-11-21 7 views

Antwort

2

Arrays von Arrays in GLSL werden von links nach rechts gelesen. vec2[3][6] wird als "ein Array von 3 Elementen gelesen, wobei jedes Element ein Array von 6 Elementen ist, wobei jedes Element ein vec2 ist."

GS-Eingänge sind gruppiert; Jedes Element repräsentiert eine einzelne Ausgabe von der vorhergehenden Shaderstufe. Die Tatsache, dass die "einzelne Ausgabe" tatsächlich ein Array-Typ sein kann, ist irrelevant.

Also, wenn Sie Eingabe/Ausgabe-Variablen verwenden, die nicht in Schnittstellenbausteine ​​sind, würde dies wie folgt aussehen:

//Vertex Shader 
out vec2[6] someVariable; 

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

Der erste Index ist der Vertex-Index.

Beachten Sie, dass dies GLSL 4.30 oder die ARB_arrays_of_arrays erfordern kann.

Wenn Sie interface blocks verwenden, um Daten zu übergeben, dann geht das Array auf dem Instanznamen des Schnittstellenblocks selbst:

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

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

Da der Block einen Instanznamen hat, Sie es in GLSL als instanceName[index].someVariable befassen .

Dies kann in OpenGL 3.2 erfolgen.

Verwandte Themen