未知布局说明符 'triangles'

unknown layout specifier 'triangles'

我刚刚开始使用几何着色器进行一些测试。我想为每个点画一个三角形。这是我的着色器:

#version 150

layout (points) in;
layout(triangles, max_vertices = 3) out;

void main(void)
{
    gl_Position = gl_in[0].gl_Position + vec4(0, 0, 0, 0);
    EmitVertex();
    gl_Position = gl_in[0].gl_Position + vec4(0.1, 0, 0, 0);
    EmitVertex();
    gl_Position = gl_in[0].gl_Position + vec4(0, 0.1, 0, 0);
    EmitVertex();
    EndPrimitive();
}

这是错误信息:

error C3008: unknown layout specifier 'triangles'

将 "triangles" 替换为 "points" 时有点效果,但显然它是绘制点。

根据标准,唯一允许的输出原始类型是

  • line_strip
  • triangle_strip

所以你想要的是

layout(triangle_strip, max_vertices = 3) out;