2013-05-22 18 views
6

In einem GLSL Shader, ich möchte eine Funktion erstellen, die ein bisschen wie folgt aussieht:Können Sie ein Array fester Größe als GLSL-Funktionsparameter übergeben?

void MyFunction(out float results[9]) 
{ 
    float value0 = 3.1546; 
    float value1 = 42;  // whatever value  
    /* ... long, complicated code ... */ 

    results[0] = value0; 
    results[1] = value1; 
    results[2] = value2; 
    ... 
} 

Kann eine solche Funktion Signatur verwendet und in GLSL kompiliert werden?
Wenn nein, gibt es Alternativen?

Antwort

5

Ja, das ist ein gültiger GLSL-Code.

Das bedeutet nicht, dass es sicherlich kompilieren wird, aber es ist Gesetzbuch. Davon abgesehen ist es wahrscheinlich besser, nur das Array zurückzugeben (was Sie auch tun können), anstatt es als Ausgabeparameter zu übergeben.

+0

Sie haben Recht. Ich fand die Info auch in der Spezifikation: http://www.opengl.org/registry/doc/GLSLangSpec.4.30.6.pdf#page=35 – wil

+2

Warum ist es wahrscheinlich besser, das Array zurückzugeben? gibt es einige Compiler-Optimierung mit einem lokalen und Rückgabe, anstatt eine Variable vor Ort zu ändern? –

Verwandte Themen