顶点着色器 -> 几何着色器,错误“获取非活动制服的位置”

Posted

技术标签:

【中文标题】顶点着色器 -> 几何着色器,错误“获取非活动制服的位置”【英文标题】:Vertex Shader -> Geometry Shader, error "Getting the location of inactive Uniform" 【发布时间】:2014-04-01 18:37:01 【问题描述】:

我有类似下面的设置,

顶点着色器(...用于无关的东西):

#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 个,供片段着色器使用,我是否正确理解和使用几何着色器?

【问题讨论】:

【参考方案1】:

好的,我发现了我的问题。

我使用了错误的着色器,它与我尝试使用的着色器具有相同的顶点着色器,所以一些制服有效,而另一些则没有,我很困惑。

【讨论】:

以上是关于顶点着色器 -> 几何着色器,错误“获取非活动制服的位置”的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader:几何着色器

✠OpenGL-13-几何着色器

OpenGL几何着色器三角形不会没有错误地绘制

渲染管道几何阶段二“顶点着色器”

渲染管道几何阶段二“顶点着色器”

opengl ---几何着色器