我正在使用openscenegraph渲染具有〜9000顶点的场景。每个Drawable是一条线(我必须保留它,因为它代表一个“酒吧”)。所以我使用功能setVertexArray()
与每个Geometry
节点上的相同顶点数组,但使用不同的DrawElementsUInt
。OSG共享顶点数组重复
总共有12000个drawable,我应该有9000个顶点,但是我有大约2000000个顶点和两个drawable。 (我看到在查看器中使用“S”键)。
我有办法强制绘图使用相同的数组,而不是复制它吗?
我在Qt中使用OSG。
m_vertices是一个包含9000个值的osg :: vec3Array *
addBar被称为12000次。
void addBar(osg::Node *geode)
{
osg::ref_ptr<osg::Geometry> bar = new osg::Geometry;
bar.get()->setVertexArray(m_vertices);
bar->setUseDisplayList(false);
osg::DrawElementsUInt *ids = new osg::DrawElementsUInt(osg::PrimitiveSet::LINES);
ids->push_back(/* first Id*/);
ids->push_back(/* second id */);
bar.get()->addPrimitiveSet(ids);
geode->asGeode()->addDrawable(bar.get());
}
向我们显示代码。 – cmannett85
是更好的?我不能显示真正的代码,因为它不是我的财产。 – Brugere
好的,我发现使用'osgFX :: Outline'作为组节点使顶点数加倍。但我仍然有'几何节点的数量*顶点的数量' – Brugere