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.

War es hilfreich?

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
scroll top