使用几何着色器创建新的基元类型

5

除输入的原始类型外,是否有可能从几何着色器输出新的原始类型?我想输入一个点并渲染一个三角形。该点只会作为此三角形的中心点使用。如果不行,是否还有其他选项可以仅输入点并渲染由该点定义的其他几何图形?

通过这里的答案帮助,几何着色器可以实现我所需的功能(如果有人需要):

#version 120
#extension GL_EXT_geometry_shader4 : enable

layout(points) in;
layout(triangle_strip) out;

void main()
{   
    gl_Position = gl_in[0].gl_Position;
    EmitVertex();
    gl_Position = gl_in[0].gl_Position+vec4(1,0,0,0);
    EmitVertex();
    gl_Position = gl_in[0].gl_Position+vec4(0, 1, 0, 0);
    EmitVertex();
    EndPrimitive();
}
1个回答

4

是的,这是完全可能的,这就是几何着色器的作用。只需将输入原始类型指定为点,将输出原始类型指定为三角形(或三角形带,无论是否仅为单个三角形),可以在应用程序中使用glProgramParameteri或直接在着色器中使用更现代的layout语法。


请注意,您实际上没有语法选择的权利。或者说,您的语法选择取决于您是使用几何着色器的扩展版本还是核心功能。不要尝试混合两者。 - Nicol Bolas
@Nicol 我还没有使用过几何着色器。感谢你的澄清。 - Christian Rau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接