Loading...
Searching...
No Matches
rendererPlugin.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_H
8#define PXR_IMAGING_HD_RENDERER_PLUGIN_H
9
10#include "pxr/pxr.h"
11#include "pxr/imaging/hd/api.h"
12#include "pxr/imaging/hf/pluginBase.h"
13#include "pxr/imaging/hd/renderDelegate.h"
14
15PXR_NAMESPACE_OPEN_SCOPE
16
17class HdRenderer;
22
35{
36public:
37
40
47 HD_API
49 HdSceneIndexBaseRefPtr const &sceneIndex,
50 const HdRendererCreateArgs &rendererCreateArgs);
51
53
57 HD_API
59
63 HD_API
64 std::string GetDisplayName() const;
65
77 virtual bool IsSupported(
78 HdRendererCreateArgs const &rendererCreateArgs,
79 std::string *reasonWhyNot = nullptr) const = 0;
80
83
89 HD_API
91 HdRenderSettingsMap const &settingsMap = {});
100 virtual HdRenderDelegate *CreateRenderDelegate() = 0;
101
110 HD_API
111 virtual HdRenderDelegate *CreateRenderDelegate(
112 HdRenderSettingsMap const& settingsMap);
113
120 virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate) = 0;
121
123
135 HD_API
136 virtual bool IsSupported(bool gpuEnabled = true) const;
137
138protected:
139 HdRendererPlugin() = default;
140 HD_API
141 ~HdRendererPlugin() override;
142
143 HD_API
144 virtual std::unique_ptr<HdRenderer> _CreateRenderer(
145 HdSceneIndexBaseRefPtr const &sceneIndex,
146 const HdRendererCreateArgs &rendererCreateArgs);
147
148private:
149 // This class doesn't require copy support.
150 HdRendererPlugin(const HdRendererPlugin &) = delete;
151 HdRendererPlugin &operator =(const HdRendererPlugin &) = delete;
152
153};
154
155
156PXR_NAMESPACE_CLOSE_SCOPE
157
158#endif // PXR_IMAGING_HD_RENDERER_PLUGIN_H
A (movable) handle for a render delegate that was created using a a plugin.
A handle for a renderer that was created by a renderer plugin.
A Hydra renderer.
Definition: renderer.h:27
This class defines a renderer plugin interface for Hydra.
HD_API TfToken GetPluginId() const
Look-up plugin id in plugin registry.
virtual void DeleteRenderDelegate(HdRenderDelegate *renderDelegate)=0
Clients should use CreateDelegate since this method will eventually become protected.
HD_API std::string GetDisplayName() const
Look-up display name in plugin registry.
HD_API HdPluginRenderDelegateUniqueHandle CreateDelegate(HdRenderSettingsMap const &settingsMap={})
Create a render delegate through the plugin and wrap it in a handle that keeps this plugin alive unti...
virtual bool IsSupported(HdRendererCreateArgs const &rendererCreateArgs, std::string *reasonWhyNot=nullptr) const =0
Returns true if this renderer plugin is supported in the running process and false if not.
virtual HD_API bool IsSupported(bool gpuEnabled=true) const
virtual HD_API HdRenderDelegate * CreateRenderDelegate(HdRenderSettingsMap const &settingsMap)
Clients should use CreateDelegate since this method will eventually become protected.
HD_API HdPluginRendererUniqueHandle CreateRenderer(HdSceneIndexBaseRefPtr const &sceneIndex, const HdRendererCreateArgs &rendererCreateArgs)
Create renderer through the plugin and wrap it in a handle that keeps this plugin alive until the ren...
virtual HdRenderDelegate * CreateRenderDelegate()=0
Clients should use CreateDelegate since this method will eventually become protected,...
Abstract interface to scene data.
Definition: sceneIndex.h:54
Base class for all hydra plugin classes.
Definition: pluginBase.h:23
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
#define TF_DECLARE_REF_PTRS(type)
Define standard ref pointer types.
Definition: declarePtrs.h:58
HdRendererCreateArgs contains members indicating the resources available when creating a renderer plu...