我已经学习了大约一个月的OpenGL(实际上是OpenTK),并开始尝试使用几何着色器。我最初编写了一个更复杂的着色器,但它没有起作用,所以我将一切都简化为一个简单的传递着色器,但它仍然不起作用。
顶点着色器:
#version 420 core
layout (location = 0) in vec3 position;
uniform mat4 transform;
void main()
{
gl_Position = transform * vec4(position, 1);
}
几何着色器:
#version 420 core
layout (triangles) in;
layout (triangle_strip) out;
void main()
{
int i;
for(i = 0; i < gl_in.length(); i++)
{
gl_Position = gl_in[i].gl_Position;
EmitVertex();
}
EndPrimitive();
}
片段着色器:
#version 420 core
layout (binding = 0) uniform sampler2D diffuse;
layout(location = 0) out vec4 color;
void main()
{
color = vec4(1, 1, 1, 1);
}
它应该在窗口的右下角绘制一个白色正方形。没有几何着色器,它能够实现这一点,这是我所期望的。但是使用几何着色器,它什么都不渲染。信息日志显示所有内容都被正确地编译和链接。
我漏掉了什么?