我正在尝试镶嵌一个球体,但是当我应用曲面细分着色器时,屏幕上没有显示任何内容。在阅读了相关的相关文献并在这里提出一些问题后,我仍然无法弄清楚出了什么问题。链接或加载着色器时没有错误,所以我有点不知所措。
着色器和绘图代码如下。 感谢。
顶点
#version 410
in vec4 vPosition;
out vec3 Position;
void main()
{
Position = vPosition.xyz;
}
控制
#version 410
layout(vertices = 3) out;
in vec3 Position[];
out vec3 tcPosition[];
#define ID gl_InvocationID
void main()
{
tcPosition[ID] = Position[ID];
if(ID == 0) {
gl_TessLevelInner[0] = 3.0;
gl_TessLevelOuter[0] = 2.0;
gl_TessLevelOuter[1] = 2.0;
gl_TessLevelOuter[2] = 2.0;
}
}
评价
#version 410
layout(triangles, equal_spacing, ccw) in;
in vec3 tcPosition[];
out vec3 tePosition;
uniform mat4 projection;
uniform mat4 Modelview;
void main()
{
vec3 p0 = gl_TessCoord.x * tcPosition[0];
vec3 p1 = gl_TessCoord.y * tcPosition[1];
vec3 p2 = gl_TessCoord.z * tcPosition[2];
vec3 tePosition = p0 + p1 + p2;
gl_Position = vec4(tePosition, 1.0);
}
片段
#version 410
out vec4 FragColor;
void main()
{
FragColor = vec4(1.0, 1.0, 0.0, 1.0);
}
绘制代码
glPatchParameteri(GL_PATCH_VERTICES, 3);
glDrawArrays( GL_PATCHES, 0, sphere.vertexNumber );