Opengl 将变量从几何体着色器传递到片段着色器

Opengl 将变量从几何体着色器传递到片段着色器,opengl,glsl,geometry-shader,Opengl,Glsl,Geometry Shader,我有一个GLSL几何体着色器,如下所示: #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++) { ....

我有一个GLSL几何体着色器,如下所示:

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

有人能帮我将一个变量从几何体传递到片段着色器吗<代码>变化在
#版本150

中不推荐使用。您需要在片段着色器中将测试声明为输入(我想知道着色器为什么会编译):


啊,对不起,这是一个打字错误,是在我删除Stackoverflow的代码时发生的:)。然而,你投了一票。你确定它会因为你的碎片着色器而崩溃吗?你所做的听起来不错。崩溃发生在哪里?我使用JOGL2,因为我用Java编写这个应用程序。如果着色器看起来对你来说是正确的,那么它确实对我有很大帮助,因为这个bug可能在其他地方。我甚至没有得到GPU的响应,所以我认为这可能是Java OpenGl绑定中的一个bug。。。我目前不知道应该发布哪个代码部分,因为我不确定它是否有用。。。如果我知道更多,我会更新我的帖子。Thx的帮助。尝试注释出
test
,并编写
fColor=vec4(1.0)。如果这样做有效,
test
可能是问题所在,否则您可以排除它。
#version 150

out vec4 fColor;
in vec4 test;

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