Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
FilamentRenderToBuffer.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
11
13namespace filament {
14class Engine;
15class Renderer;
16class Scene;
17class SwapChain;
18} // namespace filament
20
21namespace open3d {
22namespace visualization {
23namespace rendering {
24
25class FilamentRenderer;
26class FilamentScene;
27class FilamentView;
28class GaussianSplatRenderer;
29
31public:
32 // Use Renderer::CreateBufferRenderer to instantiate
33 // FilamentRenderToBuffer, unless you are NOT using
34 // open3d::visualization::gui or another FilamentRenderer instance.
35 explicit FilamentRenderToBuffer(filament::Engine& engine);
36 ~FilamentRenderToBuffer() override;
37
38 void Configure(const View* view,
39 Scene* scene,
40 int width,
41 int height,
42 int n_channels,
43 bool depth_image,
44 BufferReadyCallback cb) override;
45 void SetDimensions(std::uint32_t width, std::uint32_t height) override;
46 View& GetView() override;
47
48 void Render() override;
49
50 // Renders the minimum necessary to get Filament to tick its rendering
51 // thread.
52 void RenderTick();
53
54private:
55 friend class FilamentRenderer;
56
57 filament::Engine& engine_;
58 filament::Renderer* renderer_ = nullptr;
59 filament::SwapChain* swapchain_ = nullptr;
60 FilamentView* view_ = nullptr;
61 FilamentScene* scene_ = nullptr;
63 GaussianSplatRenderer* gaussian_splat_renderer_ = nullptr;
64
65 std::size_t width_ = 0;
66 std::size_t height_ = 0;
67 std::size_t n_channels_ = 0;
68 std::uint8_t* buffer_ = nullptr;
69 std::size_t buffer_size_ = 0;
70 bool depth_image_ = false;
71
72 BufferReadyCallback callback_;
73 bool frame_done_ = true;
74 bool pending_ = false;
75
76 static void ReadPixelsCallback(void* buffer, size_t size, void* user);
77 void CopySettings(const View* view);
78};
79
80} // namespace rendering
81} // namespace visualization
82} // namespace open3d
Definition FilamentRenderToBuffer.h:30
void SetDimensions(std::uint32_t width, std::uint32_t height) override
Definition FilamentRenderToBuffer.cpp:152
~FilamentRenderToBuffer() override
Definition FilamentRenderToBuffer.cpp:91
void Configure(const View *view, Scene *scene, int width, int height, int n_channels, bool depth_image, BufferReadyCallback cb) override
Definition FilamentRenderToBuffer.cpp:105
void Render() override
Definition FilamentRenderToBuffer.cpp:227
void RenderTick()
Definition FilamentRenderToBuffer.cpp:446
View & GetView() override
Definition FilamentRenderToBuffer.cpp:201
Definition GaussianSplatRenderer.h:38
std::function< void(const Buffer &)> BufferReadyCallback
Definition RenderToBuffer.h:31
int width
Definition FilePCD.cpp:53
int size
Definition FilePCD.cpp:41
int height
Definition FilePCD.cpp:54
Definition FilamentEngine.h:15
Definition PinholeCameraIntrinsic.cpp:16