我有类似以下设置的内容,
顶点着色器(......用于不相关的东西):
#version 330 core
uniform mat4 ModelViewMatrix;
...
in vec4 position;
...
out vec4 out_position;
...
void main()
{
...
out_position = ModelViewMatrix * position;
...
}
几何着色器(......用于不相关的东西):
#version 330 core
...
uniform mat4 ProjectionMatrix;
...
layout(lines) in;
layout(triangle_strip, max_vertices = 4) out;
in vec4 out_position[];
...
void main()
{
vec4 lineDirection = out_position[1] - out_position[0];
vec4 scaledLineWidthDir = ...;
...
gl_Position = ProjectionMatrix * (lineDirection - scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (lineDirection + scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (-lineDirection + scaledLineWidthDir);
EmitVertex();
gl_Position = ProjectionMatrix * (-lineDirection - scaledLineWidthDir);
EmitVertex();
EndPrimitive();
}
但是当我尝试运行着色器时,似乎没有使用ModelViewMatrix(我得到"获取非活动统一的位置"尝试设置它时),甚至认为我正在使用它用于计算几何着色器中的gl_Position。是什么给了什么?
据我所知,这里的几何着色器包含2个顶点,并输出4,供片段着色器使用,我是否正确理解和使用几何着色器?
答案 0 :(得分:0)
好的,我发现了我的问题。
我使用的是错误的着色器,它与我正在尝试使用的着色器具有相同的顶点着色器,所以有些制服有效,而有些则没有,我感到困惑。