Pasar variables de un sombreador de geometría a un sombreador de fragmentos

Tengo un sombreador de geometría GLSL que se parece a lo siguiente:

#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();
    }
}

Sin embargo, cuando intento acceder a "prueba" en mi sombreador de fragmentos, mi aplicación se bloquea. Aquí está mi sombreador de fragmentos:

#version 150

out vec4 fColor;
in vec4 test;

void main(void) {
    fColor = vec4(test.x, 1.0, 0.4, 0);
}

¿Alguien puede ayudarme a pasar una variable de la geometría al sombreador de fragmentos? varying está obsoleto en #version 150.

preguntado el 16 de mayo de 11 a las 20:05

¿Estás seguro de que falla debido a tu sombreador de fragmentos? -

Lo que estás haciendo suena bien. ¿Dónde está ocurriendo exactamente el accidente? -

Estoy usando JOGL2, porque estoy escribiendo esta aplicación en Java. Si el sombreador te parece correcto, realmente me ayuda mucho, porque entonces el error podría estar en otro lugar. Ni siquiera recibo una respuesta de la GPU, así que creo que esto podría ser un error en los enlaces de Java OpenGl ... Actualmente no sé qué parte del código debería publicar, porque no estoy seguro de si ayuda o no ... Actualizaré mi publicación si sé más. Gracias por la ayuda. -

Intenta comentar test, y escribiendo fColor = vec4(1.0);. Si eso funciona, test podría ser el problema, de lo contrario puede descartarlo. -

1 Respuestas

Debe declarar la prueba como entrada en su sombreador de fragmentos (me pregunto por qué se compila el sombreador):

in vec4 test;

contestado el 17 de mayo de 11 a las 00:05

Ah, lo siento, fue un error tipográfico, que ocurrió mientras eliminaba el código de Stackoverflow :). Sin embargo, un voto a favor para ti. - iuiz

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.