使用几何着色器创建新的基元类型
除了输入之外,是否可以从几何着色器输出新的基元类型?我想输入一个点并渲染一个三角形。该点将用作该三角形的中心。如果没有,是否还有其他选项可以仅输入点并渲染由该点定义的其他几何图形?
在此处答案的帮助下,几何着色器正在执行我所要求的操作(如果有人需要的话):
#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();
}
Is it possible to output new primitive type from geometry shader other than was input? I'd like to input a point and render a triangle. The point would be used just as center for this triangle. If not, is there other option to input just point and render some other piece of geometry defined by that point?
With the help from answer here is geometry shader doing just what I asked for (if anyone ever needed):
#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();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这是完全可能的,这就是几何着色器的用途。只需使用应用程序中的
glProgramParameteri
或使用更现代的将输入基元类型指定为点,将输出基元类型指定为三角形(或者更确切地说,三角形带,无论它是否只是一个三角形) >layout
语法直接在着色器中。Yes, this is perfectly possible, that's what the geometry shader is there for. Just specify the input primitive type as point and the output primitive type as triangle (or rather triangle strip, no matter if it's only a single triangle) using either
glProgramParameteri
in the application or using the more modernlayout
syntax directly in the shader.