Loading...
Searching...
No Matches
rendererPluginRegistry.h
1//
2// Copyright 2017 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_IMAGING_HD_RENDERER_PLUGIN_REGISTRY_H
8#define PXR_IMAGING_HD_RENDERER_PLUGIN_REGISTRY_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hd/api.h"
12#include "pxr/imaging/hd/renderDelegate.h"
14#include "pxr/imaging/hf/pluginRegistry.h"
15
16PXR_NAMESPACE_OPEN_SCOPE
17
18
22
23class HdRendererPluginRegistry final : public HfPluginRegistry
24{
25public:
29 HD_API
30 static HdRendererPluginRegistry &GetInstance();
31
35 template<typename T, typename... Bases>
36 static void Define();
37
44 HD_API
45 TfToken GetDefaultPluginId(bool gpuEnabled = true);
46
53 HD_API
54 TfToken GetDefaultPluginId(
55 HdRendererCreateArgs const &rendererCreateArgs);
56
64 HD_API
65 HdRendererPlugin *GetRendererPlugin(const TfToken &pluginId);
66
73 HD_API
74 HdRendererPluginHandle GetOrCreateRendererPlugin(const TfToken &pluginId);
75
83 HD_API
84 HdPluginRenderDelegateUniqueHandle CreateRenderDelegate(
85 const TfToken &pluginId,
86 const HdRenderSettingsMap &settingsMap = {});
87
88private:
89 // Friend required by TfSingleton to access constructor (as it is private).
90 friend class TfSingleton<HdRendererPluginRegistry>;
91
93 const PlugRegistry &plugRegistry, const TfType &pluginType) override;
94
95 // Singleton gets private constructed
96 HdRendererPluginRegistry();
97 ~HdRendererPluginRegistry() override;
98
99 //
102 HdRendererPluginRegistry(const HdRendererPluginRegistry &) = delete;
103 HdRendererPluginRegistry &operator=(const HdRendererPluginRegistry &) = delete;
104};
105
106
107template<typename T, typename... Bases>
108void HdRendererPluginRegistry::Define()
109{
111}
112
113
114PXR_NAMESPACE_CLOSE_SCOPE
115
116#endif // PXR_IMAGING_HD_RENDERER_PLUGIN_REGISTRY_H
A (movable) handle for a render delegate that was created using a a plugin.
A handle for HdRendererPlugin also storing the plugin id.
This class defines a renderer plugin interface for Hydra.
Base class for registering Hydra plugins using the plug mechanism.
static void Define()
Entry point for registering a types implementation.
virtual HF_API void _CollectAdditionalMetadata(const PlugRegistry &plugRegistry, const TfType &pluginType)
Gives subclasses an opportunity to inspect plugInfo-based metadata at the time of discovery.
Defines an interface for registering plugins.
Definition: registry.h:319
Manage a single instance of an object (see.
Definition: singleton.h:105
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
TfType represents a dynamic runtime type.
Definition: type.h:48
Manage a single instance of an object.
HdRendererCreateArgs contains members indicating the resources available when creating a renderer plu...