Loading [MathJax]/extensions/TeX/AMSsymbols.js
Open3D (C++ API)  0.19.0
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Renderer.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <memory>
11 
14 
15 namespace open3d {
16 
17 namespace t {
18 namespace geometry {
19 class Image;
20 }
21 } // namespace t
22 
23 namespace geometry {
24 class Image;
25 }
26 
27 namespace core {
28 class Tensor;
29 }
30 
31 namespace visualization {
32 namespace rendering {
33 
34 class RenderToBuffer;
35 class Scene;
36 class View;
37 
39 public:
40  using ErrorCallback = std::function<void(
41  const ResourceLoadRequest&, const uint8_t, const std::string&)>;
42 
43  ResourceLoadRequest(const void* data, size_t data_size);
44  explicit ResourceLoadRequest(const char* path);
45 
46  ResourceLoadRequest(const void* data,
47  size_t data_size,
48  ErrorCallback error_callback);
49  ResourceLoadRequest(const char* path, ErrorCallback error_callback);
50 
51  const void* data_;
52  const size_t data_size_;
53  const std::string path_;
55 };
56 
57 class Renderer {
58 public:
59  virtual ~Renderer() = default;
60 
61  virtual SceneHandle CreateScene() = 0;
62  virtual Scene* GetScene(const SceneHandle& id) const = 0;
63  virtual void DestroyScene(const SceneHandle& id) = 0;
64 
65  virtual void SetClearColor(const Eigen::Vector4f& color) = 0;
66  virtual void UpdateSwapChain() = 0;
67  virtual void UpdateBitmapSwapChain(int width, int height) = 0;
68 
69  virtual void BeginFrame() = 0;
70  virtual void Draw() = 0;
71  // If using the Filament renderer this must be called *before* EndFrame()!
72  virtual void RequestReadPixels(
73  int width,
74  int height,
75  std::function<void(std::shared_ptr<core::Tensor>)> callback) = 0;
76  virtual void EndFrame() = 0;
77 
78  virtual void SetOnAfterDraw(std::function<void()> callback) = 0;
79 
80  virtual MaterialHandle AddMaterial(const ResourceLoadRequest& request) = 0;
82  const MaterialHandle& material) = 0;
85  const MaterialInstanceHandle& id) = 0;
86  virtual void RemoveMaterialInstance(const MaterialInstanceHandle& id) = 0;
87 
89  bool srgb = false) = 0;
91  const std::shared_ptr<geometry::Image> image,
92  bool srgb = false) = 0;
94  bool srgb = false) = 0;
95  virtual bool UpdateTexture(TextureHandle texture,
96  const std::shared_ptr<geometry::Image> image,
97  bool srgb) = 0;
98  virtual bool UpdateTexture(TextureHandle texture,
100  bool srgb) = 0;
101 
102  virtual void RemoveTexture(const TextureHandle& id) = 0;
103 
105  const ResourceLoadRequest& request) = 0;
106  virtual void RemoveIndirectLight(const IndirectLightHandle& id) = 0;
107 
108  virtual SkyboxHandle AddSkybox(const ResourceLoadRequest& request) = 0;
109  virtual void RemoveSkybox(const SkyboxHandle& id) = 0;
110 
111  virtual std::shared_ptr<RenderToBuffer> CreateBufferRenderer() = 0;
112 
113  void RenderToImage(
114  View* view,
115  Scene* scene,
116  std::function<void(std::shared_ptr<geometry::Image>)> cb);
117 
118  // Returns a float image ranging from 0 (near plane) to 1 (far plane)
119  void RenderToDepthImage(
120  View* view,
121  Scene* scene,
122  std::function<void(std::shared_ptr<geometry::Image>)> cb,
123  bool z_in_view_space = false);
124 };
125 
126 } // namespace rendering
127 } // namespace visualization
128 } // namespace open3d
std::shared_ptr< core::Tensor > image
Definition: FilamentRenderer.cpp:183
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition: FilamentRenderer.cpp:182
math::float4 color
Definition: LineSetBuffers.cpp:45
double t
Definition: SurfaceReconstructionPoisson.cpp:172
The Image class stores image with customizable rows, cols, channels, dtype and device.
Definition: Image.h:29
Definition: MaterialModifier.h:107
virtual void RemoveMaterialInstance(const MaterialInstanceHandle &id)=0
virtual void RemoveTexture(const TextureHandle &id)=0
virtual void RemoveIndirectLight(const IndirectLightHandle &id)=0
virtual TextureHandle AddTexture(const ResourceLoadRequest &request, bool srgb=false)=0
virtual void RequestReadPixels(int width, int height, std::function< void(std::shared_ptr< core::Tensor >)> callback)=0
virtual bool UpdateTexture(TextureHandle texture, const t::geometry::Image &image, bool srgb)=0
virtual std::shared_ptr< RenderToBuffer > CreateBufferRenderer()=0
virtual void SetClearColor(const Eigen::Vector4f &color)=0
virtual Scene * GetScene(const SceneHandle &id) const =0
virtual SkyboxHandle AddSkybox(const ResourceLoadRequest &request)=0
virtual void RemoveSkybox(const SkyboxHandle &id)=0
virtual IndirectLightHandle AddIndirectLight(const ResourceLoadRequest &request)=0
void RenderToDepthImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb, bool z_in_view_space=false)
Definition: Renderer.cpp:94
virtual TextureHandle AddTexture(const t::geometry::Image &image, bool srgb=false)=0
virtual bool UpdateTexture(TextureHandle texture, const std::shared_ptr< geometry::Image > image, bool srgb)=0
virtual MaterialModifier & ModifyMaterial(const MaterialHandle &id)=0
virtual void DestroyScene(const SceneHandle &id)=0
virtual MaterialModifier & ModifyMaterial(const MaterialInstanceHandle &id)=0
virtual void UpdateBitmapSwapChain(int width, int height)=0
virtual MaterialInstanceHandle AddMaterialInstance(const MaterialHandle &material)=0
virtual MaterialHandle AddMaterial(const ResourceLoadRequest &request)=0
virtual TextureHandle AddTexture(const std::shared_ptr< geometry::Image > image, bool srgb=false)=0
void RenderToImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb)
Definition: Renderer.cpp:67
virtual void SetOnAfterDraw(std::function< void()> callback)=0
const void * data_
Definition: Renderer.h:51
const size_t data_size_
Definition: Renderer.h:52
std::function< void(const ResourceLoadRequest &, const uint8_t, const std::string &)> ErrorCallback
Definition: Renderer.h:41
ResourceLoadRequest(const void *data, size_t data_size)
Definition: Renderer.cpp:40
ErrorCallback error_callback_
Definition: Renderer.h:54
const std::string path_
Definition: Renderer.h:53
int width
Definition: FilePCD.cpp:52
int height
Definition: FilePCD.cpp:53
const char const char value recording_handle imu_sample void
Definition: K4aPlugin.cpp:250
const char const char value recording_handle imu_sample recording_handle uint8_t data
Definition: K4aPlugin.cpp:269
Definition: PinholeCameraIntrinsic.cpp:16