无法正确链接几何体着色器



我正在尝试创建一个简单的passthrough"Geometry Shader";但由于某种原因,它没有联系。调试信息显示编译良好。我不知道我在这件事上做错了什么?这不是驱动程序或操作系统,因为我以前链接和使用过几何体着色器,它们工作得很好。

顶点着色器代码:

#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();
}

调试输出:

在编译着色器中从文件:/Curve.vert编译结果::1着色器编译和附加成功:在"从文件编译着色器"中:../Curve.geom编译结果::1着色器编译和附加成功:在从文件编译着色器中:/Curve.frag编译结果::1着色器编译和附加成功:链接,找到程序句柄: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

几何体着色器变换基本体并为每个基本体执行。因此,"几何着色器"的输入是一个数组,其大小与基本体的顶点数相同。例如:

in vec4 color[];

必须为输出基本体的每个顶点发射一个顶点。

最新更新