2011-05-16 181 views
3

变量传递我有一个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(); 
    } 
} 

然而,当我尝试在我的片段着色器访问“测试”我的应用程序崩溃。这里是我的片段着色器:

#version 150 

out vec4 fColor; 
in vec4 test; 

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

有人可以帮我将几何变量传递给片段着色器吗? varying已弃用#version 150

+1

你确定它崩溃了,因为你的片段着色器的? – 2011-05-16 20:38:03

+1

你在做什么听起来不错。事故发生在哪里? – 2011-05-16 20:50:46

+0

我使用JOGL2,因为我正在用Java编写这个应用程序。如果着色器看起来合适,它真的帮了我很多,因为这个bug可能在其他地方。 我甚至没有得到GPU的响应,所以我认为这可能是Java OpenGl绑定中的一个错误...我目前不知道应该发布哪个代码部分,因为我不确定它是否有帮助或不...我会更新我的帖子,如果我知道更多。 Thx寻求帮助。 – iuiz 2011-05-17 18:21:34

回答

2

您需要在您的片段着色器宣布测试输入(我不知道为什么着色器编译):

in vec4 test; 
+0

对不起,这是一个错字,发生在我剥离了Stackoverflow的代码:)。然而,有人赞成你。 – iuiz 2011-05-16 20:23:46