【问题标题】:unable to link geometry shader properly无法正确链接几何着色器
【发布时间】:2021-07-07 07:10:46
【问题描述】:

我正在尝试创建一个简单的直通“几何着色器”,但由于某种原因它没有链接。调试信息说它的编译很好。我不知道我在这个中做错了什么?它不是我之前链接和使用几何着色器的驱动程序或操作系统,它们运行良好。

顶点着色器代码:

#version 450

in vec3 position;
uniform mat4 MVP;
out vec4 color;

void main()
{
    gl_Position = MVP * vec4(position, 1.0);
    color = vec4(0.5, 0.5, 0.0, 1.0);
}

片段着色器代码:

#version 450

in vec4 fColor;
out vec4 fcolor;

void main() {
    fcolor = fColor;
}

几何着色器代码:

#version 450

layout(lines) in;
layout(triangle_strip, max_vertices = 4) out;

in vec4 color;
out vec4 fColor;

void main()
{
    fColor = color;
    for(int i = 0; i <= gl_in.length(); i++)
    {
        gl_Position = gl_in[i].gl_Position;
        EmitVertex();
    }
    EndPrimitive();
}

调试输出:

在 Compile Shader from file: ../Curve.vert compile result:: 1 Shader 编译并附加成功:在从文件编译着色器中: ../Curve.geom compile result:: 1 Shader 编译附加成功: 在 Compile Shader from file: ../Curve.frag compile result:: 1 Shader 编译并附加成功:Linking..,找到程序句柄:1 GL 渲染器:GeForce GTX 1660 Ti/PCIe/SSE2 GL 供应商: NVIDIA Corporation GL 版本:4.6.0 NVIDIA 461.40 GL 版本号:4.6 GLSL 版本:4.60 NVIDIA --------------- 调试消息(131216):程序/着色器状态信息:GLSL 程序 1 无法链接来源:API 类型:其他严重性:低

曲线着色器程序未链接曲线着色器程序未验证使用 不成功,退货? m_linked 状态:false 程序句柄:1 曲线着色器程序句柄:1

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

    Geometry Shader 转换 Primitives 并针对每个原语执行。因此,几何着色器的输入是一个图元顶点数大小的数组。例如:

    in vec4 color[];
    

    您必须为输出图元的每个顶点发射一个顶点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多