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