我目前正在尝试将曲面细分着色器添加到我的程序中,但我觉得我已经无计可施了。我已经阅读了几个教程,并在这里研究了很多问题。不幸的是,在这一切之后,我仍然不明白我做错了什么。我很乐意接受任何提示,并且承认我在这里完全是新手。我的顶点和片段着色器可以工作,但无论我的代码基于哪个教程,一旦添加了曲面细分着色器,我就无法显示任何内容。在加载、链接或使用着色器/程序时,我也没有收到任何错误。
有问题的四个着色器:
顶点:
layout (location = 0) in vec4 vertex;
out gl_PerVertex{
vec4 gl_Position;
};
void main()
{
gl_Position = gl_Vertex;
//note I have to multiply this by the MVP matrix if there is no tessellation
}
镶嵌控制着色器:
layout (vertices = 3) out;
out gl_PerVertex {
vec4 gl_Position;
} gl_out[];
void main()
{
if (gl_InvocationID == 0)
{
gl_TessLevelInner[0] = 3.0;
gl_TessLevelOuter[0] = 2.0;
gl_TessLevelOuter[1] = 2.0;
gl_TessLevelOuter[2] = 2.0;
}
gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position;
}
细分评估着色器:
layout(triangles, equal_spacing, ccw) in;
uniform mat4 ModelViewProjectionMatrix;
out gl_PerVertex{
vec4 gl_Position;
};
void main()
{
vec4 position = gl_TessCoord.x * gl_in[0].gl_Position +
gl_TessCoord.y * gl_in[1].gl_Position +
gl_TessCoord.z * gl_in[2].gl_Position;
gl_Position = ModelViewProjectionMatrix * position;
}
片段着色器:
void main()
{
gl_FragColor = vec4(0.1, 0.4, 0.0, 1.0);
}
我确定我在这里忽略了一些非常简单的东西,但我在这里完全不知所措。感谢您抽时间阅读。