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