MCPcopy Create free account
hub / github.com/carbonengine/trinity / MergeVertexDeclarations

Function MergeVertexDeclarations

trinity/Tr2InstancedMesh.cpp:473–495  ·  view source on GitHub ↗

-------------------------------------------------------------------------------------- Description: Combines two vertex declarations into a single multi-stream declaration. Usage indexes for instanced declaration are shifted by 8, so shader would expect POSITION8, etc. for instance data. Arguments: meshVD - Vertex definition of the base mesh instanceVD - Vertex definition of the instance data Retu

Source from the content-addressed store, hash-verified

471// UNINITIALIZED_DECLARATION on failure
472// --------------------------------------------------------------------------------------
473static unsigned int MergeVertexDeclarations( const Tr2VertexDefinition& meshVD,
474 const Tr2VertexDefinition& instanceVD )
475{
476 const unsigned usageOffset = 8;
477
478 if( meshVD.m_items.empty() || instanceVD.m_items.empty() )
479 {
480 return Tr2EffectStateManager::UNINITIALIZED_DECLARATION;
481 }
482
483 Tr2VertexDefinition merged;
484 merged = meshVD;
485 merged.m_items.insert( merged.m_items.end(), instanceVD.m_items.begin(), instanceVD.m_items.end() );
486
487 for( size_t i = 0; i != instanceVD.m_items.size(); ++i )
488 {
489 merged.m_items[i + meshVD.m_items.size()].m_stream = 1;
490 merged.m_items[i + meshVD.m_items.size()].m_instanceStepRate = 1;
491 merged.m_items[i + meshVD.m_items.size()].m_usageIndex += usageOffset;
492 }
493
494 return Tr2EffectStateManager::GetVertexDeclarationHandle( merged );
495}
496
497// --------------------------------------------------------------------------------------
498// Description:

Callers 1

Calls 5

emptyMethod · 0.80
sizeMethod · 0.80
endMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected