24 #ifndef PXR_IMAGING_HD_PLUGIN_RENDER_DELEGATE_UNIQUE_HANDLE_H
25 #define PXR_IMAGING_HD_PLUGIN_RENDER_DELEGATE_UNIQUE_HANDLE_H
28 #include "pxr/imaging/hd/api.h"
29 #include "pxr/imaging/hd/rendererPluginHandle.h"
33 PXR_NAMESPACE_OPEN_SCOPE
35 class HdRenderDelegate;
52 : _delegate(
nullptr) { }
59 ~HdPluginRenderDelegateUniqueHandle();
63 HdPluginRenderDelegateUniqueHandle &
operator=(
64 HdPluginRenderDelegateUniqueHandle &&);
67 HdPluginRenderDelegateUniqueHandle &
operator=(
68 const std::nullptr_t &);
71 HdRenderDelegate *
Get()
const {
return _delegate; }
73 HdRenderDelegate *operator->()
const {
return _delegate; }
74 HdRenderDelegate &operator*()
const {
return *_delegate; }
77 explicit operator bool()
const {
return _delegate; }
86 HdPluginRenderDelegateUniqueHandle(
88 : _plugin(plugin), _delegate(delegate) { }
91 HdRenderDelegate *_delegate;
94 PXR_NAMESPACE_CLOSE_SCOPE
This class defines a renderer plugin interface for Hydra.
A (movable) handle for a render delegate that was created using a a plugin.
HdRenderDelegate * Get() const
Get render delegate.
HD_API HdPluginRenderDelegateUniqueHandle & operator=(HdPluginRenderDelegateUniqueHandle &&)
Transfer ownership.
Token for efficient comparison, assignment, and hashing of known strings.
A handle for HdRendererPlugin also storing the plugin id.
HD_API TfToken GetPluginId() const
Get the id of the plugin used to create render delegate.