Open3D (C++ API)  0.17.0
FilamentRenderToBuffer.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2023 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;
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:172
FilamentRenderToBuffer(filament::Engine &engine)
Definition: FilamentRenderToBuffer.cpp:45
void RenderTick()
Definition: FilamentRenderToBuffer.cpp:203
View & GetView() override
Definition: FilamentRenderToBuffer.cpp:150
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
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:548
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode value const const k4a_calibration_t calibration char const const k4a_calibration_t calibration const k4a_calibration_t const k4a_float2_t const const const k4a_float3_t int valid const k4a_calibration_t const k4a_float2_t const const const k4a_float2_t int valid transformation_handle const depth_image
Definition: K4aPlugin.cpp:822
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode value const const k4a_calibration_t calibration char size_t
Definition: K4aPlugin.cpp:719
void ReadPixelsCallback(void *buffer, size_t buffer_size, void *user)
Definition: FilamentScene.cpp:1800
Definition: PinholeCameraIntrinsic.cpp:16