osg中使用geometry shader方式

烈酒焚心 提交于 2020-03-21 14:01:27

可以参考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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!