image_framework_ymj/include/open3d/visualization/rendering/filament/FilamentEngine.h

65 lines
1.9 KiB
C
Raw Permalink Normal View History

2024-12-06 16:25:16 +08:00
// ----------------------------------------------------------------------------
// - Open3D: www.open3d.org -
// ----------------------------------------------------------------------------
// Copyright (c) 2018-2023 www.open3d.org
// SPDX-License-Identifier: MIT
// ----------------------------------------------------------------------------
#pragma once
#include <string>
namespace filament {
class Engine;
}
namespace open3d {
namespace visualization {
namespace rendering {
class FilamentResourceManager;
class EngineInstance {
public:
enum class RenderingType { kDefault, kOpenGL, kVulkan, kMetal };
// Selects backend to use.
// Should be called before instance usage.
// If not called, platform available default backend will be used.
static void SelectBackend(RenderingType type);
/// Initialize Engine for headless rendering. Must be called before first
/// access to the Engine (GetInstance).
static void EnableHeadless();
// Specifies path to load shaders and skyboxes from. Must be called before
// instance usage, or default path will be used.
static void SetResourcePath(const std::string& resource_path);
static const std::string& GetResourcePath();
static filament::Engine& GetInstance();
static FilamentResourceManager& GetResourceManager();
/// Destroys the singleton instance, to force Filament cleanup at a
/// specific time. Calling GetInstance() after this will re-create
/// the instance.
static void DestroyInstance();
~EngineInstance();
private:
static EngineInstance& Get();
EngineInstance();
static RenderingType type_;
static bool is_headless_;
static std::string resource_path_;
filament::Engine* engine_;
FilamentResourceManager* resource_manager_;
};
} // namespace rendering
} // namespace visualization
} // namespace open3d