可以参考osg示例代码osggeometryshaders
它用glsl版本比较老#version 120
#extension GL_EXT_geometry_shader4 : enable
使用gl_PositionIn[],而不能使用gl_in[],这个需要更高版本
类似以下代码:
#version 150 layout(triangles) in; layout(triangle_strip, max_vertices=3) out;
vec4 p0_3d = gl_in[0].gl_Position;
vec4 p1_3d = gl_in[1].gl_Position;
vec4 p2_3d = gl_in[2].gl_Position;
需要使用osg::Program* p;
p->setParameter(GL_GEOMETRY_VERTICES_OUT_EXT ,3);//对应max_vertices=3
p->setParameter(GL_GEOMETRY_INPUT_TYPE_EXT ,GL_TRIANGLES);//对应layout(triangles)
p->setParameter(GL_GEOMETRY_OUTPUT_TYPE_EXT ,GL_TRIANGLE_STRIP);//对应layout(triangle_strip