Skip to content

Commit

Permalink
HnRenderer: fixed object destruction order
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMostDiligent committed Oct 19, 2023
1 parent 5463f43 commit 8ef9ef5
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
14 changes: 8 additions & 6 deletions Hydrogent/include/HnRendererImpl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,15 @@ class HnRendererImpl final : public ObjectBase<IHnRenderer>
USD_Renderer::PbrPsoCacheAccessor m_PbrPSOCache;
USD_Renderer::WireframePsoCacheAccessor m_WireframePSOCache;

std::unique_ptr<HnRenderDelegate> m_RenderDelegate;
std::unique_ptr<HnTaskController> m_TaskController;
pxr::UsdStageRefPtr m_Stage;

std::unique_ptr<HnRenderDelegate> m_RenderDelegate;
std::unique_ptr<pxr::HdRenderIndex> m_RenderIndex;
std::unique_ptr<pxr::UsdImagingDelegate> m_ImagingDelegate;
std::unique_ptr<HnTaskController> m_TaskController;

pxr::HdEngine m_Engine;

pxr::UsdStageRefPtr m_Stage;
pxr::HdEngine m_Engine;
pxr::HdRenderIndex* m_RenderIndex = nullptr;
pxr::UsdImagingDelegate* m_ImagingDelegate = nullptr;
pxr::TfTokenVector m_RenderTags;
pxr::HdRenderPassSharedPtr m_GeometryPass;

Expand Down
8 changes: 3 additions & 5 deletions Hydrogent/src/HnRendererImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,20 +140,18 @@ HnRendererImpl::HnRendererImpl(IReferenceCounters* pRefCounters,

HnRendererImpl::~HnRendererImpl()
{
delete m_ImagingDelegate;
delete m_RenderIndex;
}

void HnRendererImpl::LoadUSDStage(pxr::UsdStageRefPtr& Stage)
{
m_Stage = Stage;

m_RenderDelegate = HnRenderDelegate::Create({m_Device, m_Context, m_CameraAttribsCB, m_LightAttribsCB, m_USDRenderer});
m_RenderIndex = pxr::HdRenderIndex::New(m_RenderDelegate.get(), pxr::HdDriverVector{});
m_RenderIndex.reset(pxr::HdRenderIndex::New(m_RenderDelegate.get(), pxr::HdDriverVector{}));

const pxr::SdfPath SceneDelegateId = pxr::SdfPath::AbsoluteRootPath();

m_ImagingDelegate = new pxr::UsdImagingDelegate(m_RenderIndex, SceneDelegateId);
m_ImagingDelegate = std::make_unique<pxr::UsdImagingDelegate>(m_RenderIndex.get(), SceneDelegateId);
m_ImagingDelegate->Populate(m_Stage->GetPseudoRoot());

const pxr::SdfPath TaskControllerId = SceneDelegateId.AppendChild(pxr::TfToken{"_HnTaskController_"});
Expand All @@ -162,7 +160,7 @@ void HnRendererImpl::LoadUSDStage(pxr::UsdStageRefPtr& Stage)
m_RenderTags = {pxr::HdRenderTagTokens->geometry};

auto Collection = pxr::HdRprimCollection{pxr::HdTokens->geometry, pxr::HdReprSelector(pxr::HdReprTokens->hull)};
m_GeometryPass = m_RenderDelegate->CreateRenderPass(m_RenderIndex, Collection);
m_GeometryPass = m_RenderDelegate->CreateRenderPass(m_RenderIndex.get(), Collection);
}


Expand Down

0 comments on commit 8ef9ef5

Please sign in to comment.