Я использую openscenegraph для рендеринга сцены с ~ 9000 вершин. Каждый Drawable - это строка (я должен хранить ее, поскольку она представляет «бар»). Поэтому я использую функцию setVertexArray()
с тем же массивом вершин на каждом узле Geometry
, но использую другой DrawElementsUInt
.OSG shared vertex array duplicated
Имея в общей сложности 12000 рисунков, я должен иметь 9000 вершин, но у меня есть около 200 000 000 вершин и вдвое больше рисунков. (Я вижу, что с помощью клавиши «S» в средстве просмотра).
Я могу что-то сделать, чтобы заставить рисовать использовать тот же массив и не копировать его?
Я использую OSG в Qt.
m_vertices - osg :: vec3Array * содержит 9000 значений
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