osg中使用geometry shader方式

Posted coolbear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了osg中使用geometry shader方式相关的知识,希望对你有一定的参考价值。

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

以上是关于osg中使用geometry shader方式的主要内容,如果未能解决你的问题,请参考以下文章

osg内置shader变量

osg create shape

C++学习(三二九)osg::Geometry绘制到窗口的过程

osg学习(五十三)绘制纹理贴图Texture示例

在DirectX 12中使用geometry shader

unity绘制虚线 geometry shader