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

Posted

技术标签:

【中文标题】使用几何着色器创建新的基元类型【英文标题】:using geometry shader to create new primitives types 【发布时间】:2011-09-22 16:59:58 【问题描述】:

是否可以从几何着色器输出新的原始类型而不是输入?我想输入一个点并渲染一个三角形。该点将用作该三角形的中心。如果没有,是否有其他选项可以仅输入点并渲染由该点定义的其他几何图形?

在答案的帮助下,几何着色器正在做我所要求的(如果有人需要的话):

#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】:

是的,这是完全可能的,这就是几何着色器的用途。只需在应用程序中使用 glProgramParameteri 或直接在着色器。

【讨论】:

请注意,您实际上无法选择语法。或者更确切地说,您对语法的选择取决于您使用的是几何着色器的扩展版本还是核心功能。不要试图将两者混为一谈。 @Nicol 我实际上还没有使用几何着色器。感谢您的澄清。

以上是关于使用几何着色器创建新的基元类型的主要内容,如果未能解决你的问题,请参考以下文章

如果未绑定,统一值是不是保留在 GLSL 着色器中?

从未由着色器处理的位置照亮基元

✠OpenGL-13-几何着色器

Unity Shader:几何着色器

使用 python opengl (PyOpenGL) 创建几何着色器失败

OpenGL几何着色器三角形不会没有错误地绘制