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

时间:2011-09-22 16:59:59

标签: c++ opengl geometry glsl shader

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

在答案的帮助下,几何着色器就像我要求的那样(如果有人需要的话):

#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 个答案:

答案 0 :(得分:4)

是的,这是完全可能的,这就是几何着色器的用途。只需使用应用程序中的glProgramParameteri或使用更现代的layout,将输入基元类型指定为点,将输出基元类型指定为三角形(或者更确切地说是三角形条,无论它是否只是一个三角形)语法直接在着色器中。