从几何着色器的片段着色器
问题描述:
变量传递我有一个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
。
答
您需要在您的片段着色器宣布测试输入(我不知道为什么着色器编译):
in vec4 test;
+0
对不起,这是一个错字,发生在我剥离了*的代码:)。然而,有人赞成你。 – iuiz 2011-05-16 20:23:46
你确定它崩溃了,因为你的片段着色器的? – 2011-05-16 20:38:03
你在做什么听起来不错。事故发生在哪里? – 2011-05-16 20:50:46
我使用JOGL2,因为我正在用Java编写这个应用程序。如果着色器看起来合适,它真的帮了我很多,因为这个bug可能在其他地方。 我甚至没有得到GPU的响应,所以我认为这可能是Java OpenGl绑定中的一个错误...我目前不知道应该发布哪个代码部分,因为我不确定它是否有帮助或不...我会更新我的帖子,如果我知道更多。 Thx寻求帮助。 – iuiz 2011-05-17 18:21:34