我们知道,OSG中用来绘制多边形的绘图基元是osg::PrimitiveSet::POLYGON。但是仅仅靠这个绘图基元无法绘制出凹多边形,经过资料查找,发现了绘制凹多边形的方法和思路,不多废话,直接上代码。
凹多边形的实现:
//绘制环形
//两个半径参数
float radius1 = 1800.0;
float radius2 = 1350.0;
osg::ref_ptr<osg::Geometry>geom_AirArea_part2 = new osg::Geometry;
osg::ref_ptr<osg::Vec3Array> airLine_area_part2 = new osg::Vec3Array;
//添加绘制顶点
for (float i = 0; i <= 314; i += 0.5)
{
airLine_area_part2->push_back(osg::Vec3((radius1 * cos(i / 100) - radius1 + bias_x + 250.0)*3.7, (10305.0 - bias_y + radius1 * sin(i / 100))*3.7, (400.0 - i / 3.14)*3.7));
}
for (float i = 314; i >= 0; i -= 0.5)
{
airLine_area_part2->push_back(osg::Vec3((radius2 * cos(i / 100) - radius2 + bias_x - 250.0)*3.7, (10305.0 - bias_y + radius2 * sin(i / 100))*3.7, (400.0 - i / 3.14)*3.7));
}
geom_AirArea_part2->setVertexArray(airLine_area_part2.get());
// 创建颜色数组
osg::ref_ptr<osg::Vec4Array> c_color_area2

本文介绍了如何在OSG中实现凹多边形的绘制和透明效果。通过特定的代码示例,展示了如何设置颜色透明度以及启用混合和透明模式,从而达到预期的视觉效果。
450

被折叠的 条评论
为什么被折叠?



