MCPcopy Create free account
hub / github.com/ImageEngine/cortex / ensureAdjacencyVertIds

Method ensureAdjacencyVertIds

src/IECoreGL/CurvesPrimitive.cpp:450–484  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

448}
449
450void CurvesPrimitive::ensureAdjacencyVertIds() const
451{
452 if( m_memberData->adjacencyVertIdsBuffer )
453 {
454 return;
455 }
456
457 IECore::UIntVectorDataPtr vertIdsData = new IECore::UIntVectorData;
458 vector<unsigned int> &vertIds = vertIdsData->writable();
459
460 int baseIndex = 0;
461 const vector<int> &vertsPerCurve = m_memberData->vertsPerCurve->readable();
462 for( vector<int>::const_iterator it = vertsPerCurve.begin(), eIt = vertsPerCurve.end(); it != eIt; it++ )
463 {
464 int numPoints = *it;
465 int numSegments = IECoreScene::CurvesPrimitive::numSegments( m_memberData->basis, m_memberData->periodic, numPoints );
466 unsigned pi = 0;
467 for( int i=0; i<numSegments; i++ )
468 {
469 vertIds.push_back( baseIndex + ( pi % numPoints ) );
470 vertIds.push_back( baseIndex + ( (pi+1) % numPoints ) );
471 vertIds.push_back( baseIndex + ( (pi+2) % numPoints ) );
472 vertIds.push_back( baseIndex + ( (pi+3) % numPoints ) );
473 pi += m_memberData->basis.step;
474 }
475
476 baseIndex += numPoints;
477
478 }
479
480 m_memberData->numAdjacencyVertIds = vertIds.size();
481
482 CachedConverterPtr cachedConverter = CachedConverter::defaultCachedConverter();
483 m_memberData->adjacencyVertIdsBuffer = IECore::runTimeCast<const Buffer>( cachedConverter->convert( vertIdsData.get() ) );
484}
485
486void CurvesPrimitive::ensureLinearAdjacencyVertIds() const
487{

Callers

nothing calls this directly

Calls 7

readableMethod · 0.80
writableMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
convertMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected