我一直在我的代码中反复使用 ComPtr,因为我到处都需要它们,但我一直这样做:
HRESULT Material::Initialize(aiMaterial* pMaterial,
Microsoft::WRL::ComPtr<ID3D11Device1> & d3dDevice,
Microsoft::WRL::ComPtr<ID3D11DeviceContext1> & d3dContext)
这是否完全否定了 ComPtr 的引用计数优势?我应该改为按值传递(没有 &)吗?
感谢阅读
最佳答案
这完全没问题,更喜欢将它作为 const& 传递。
从语义的角度来看,按值传递是可以接受的,但从性能的角度来看并不是那么多,因为这样传递会导致引用计数上下颠簸,并且两者都是“互锁”操作,会带来严重的后果。而我们一无所获。
ComPtr 的好处是它允许正确匹配 Release 调用,这太容易搞砸了,即使很容易,它所采用的代码困惑也令人不快。
关于c++ - 我是否通过将 Microsoft::WRL::ComPtr 作为引用 (&) 传递来完全否定它的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17155391/