MCPcopy Create free account
hub / github.com/DiligentGraphics/DiligentFX / ProcessDrawItems

Method ProcessDrawItems

Hydrogent/src/HnMesh.cpp:105–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103
104template <typename HandleDrawItemFuncType, typename HandleGeomSubsetDrawItemFuncType>
105void HnMesh::ProcessDrawItems(HandleDrawItemFuncType&& HandleDrawItem,
106 HandleGeomSubsetDrawItemFuncType&& HandleGeomSubsetDrawItem)
107{
108 const pxr::HdGeomSubsets& GeomSubsets = m_Topology.GetGeomSubsets();
109 const size_t NumGeomSubsets = GeomSubsets.size();
110 for (auto const& token_repr : _reprs)
111 {
112 const pxr::TfToken& Token = token_repr.first;
113 pxr::HdReprSharedPtr Repr = token_repr.second;
114 _MeshReprConfig::DescArray Descs = _GetReprDesc(Token);
115
116 size_t DrawItemIdx = 0;
117 size_t GeomSubsetDescIdx = 0;
118 for (const pxr::HdMeshReprDesc& Desc : Descs)
119 {
120 if (Desc.geomStyle == pxr::HdMeshGeomStyleInvalid)
121 continue;
122
123 {
124 pxr::HdDrawItem* Item = Repr->GetDrawItem(DrawItemIdx++);
125 HandleDrawItem(static_cast<HnDrawItem&>(*Item));
126 }
127
128 // Update geom subset draw items if they exist
129 if (Desc.geomStyle != pxr::HdMeshGeomStylePoints)
130 {
131 for (size_t i = 0; i < NumGeomSubsets; ++i)
132 {
133 if (pxr::HdDrawItem* Item = Repr->GetDrawItemForGeomSubset(GeomSubsetDescIdx, NumGeomSubsets, i))
134 {
135 HandleGeomSubsetDrawItem(GeomSubsets[i], static_cast<HnDrawItem&>(*Item));
136 }
137 }
138 ++GeomSubsetDescIdx;
139 }
140 }
141 }
142}
143
144void HnMesh::UpdateReprMaterials(pxr::HdSceneDelegate* SceneDelegate,
145 pxr::HdRenderParam* RenderParam)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected