Übergabe von Variablen von einem Geometrie-Shader an einen Fragment-Shader
-
14-11-2019 - |
Frage
Ich habe einen GLSL-Geometrie-Shader, der wie folgt aussieht:
#version 150
uniform mat4 p;
uniform mat4 mv;
uniform mat3 nm;
layout(points) in;
layout(triangle_strip, max_vertices = 200) out;
out vec4 test;
void main() {
for (int i = 0; i < gl_in.length(); i++) {
....
gl_Position = p * mv * gl_in[i].gl_Position;
test = vec4(1.0, 0.0, 0.0, 0.0);
EmitVertex();
....
EndPrimitive();
}
}
Wenn ich jedoch versuche, in meinem Fragment-Shader auf „Test“ zuzugreifen, stürzt meine Anwendung ab.Hier ist mein Fragment-Shader:
#version 150
out vec4 fColor;
in vec4 test;
void main(void) {
fColor = vec4(test.x, 1.0, 0.4, 0);
}
Kann mir jemand helfen, eine Variable von der Geometrie an den Fragment-Shader zu übergeben? varying
ist veraltet in #version 150
.
Lösung
Sie müssen test als Eingabe in Ihrem Fragment-Shader deklarieren (ich frage mich, warum der Shader kompiliert wird):
in vec4 test;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow