10#include <fmt/format.h>
19namespace visualization {
50 static const std::uint16_t
kBadId = 0;
53 inline size_t Hash()
const {
54 return static_cast<std::uint16_t
>(
type) << 16 |
id;
69 explicit operator bool()
const {
return id !=
kBadId; }
73 std::uint16_t
GetId()
const {
return id; }
89template <EntityType entityType>
94 const auto index =
static_cast<std::uint16_t
>(entityType);
105 if (abstract.
type != entityType) {
124template <EntityType entityType>
148class hash<
open3d::visualization::rendering::REHandle_abstract> {
161 std::enable_if_t<std::is_base_of<open3d::visualization::rendering::
165 template <
typename FormatContext>
167 FormatContext& ctx) ->
decltype(ctx.out()) {
168 return format_to(ctx.out(),
"[{}, {}, hash: {}]",
170 TypeToString(uid.
type),
171 uid.GetId(), uid.Hash());
174 template <
typename ParseContext>
175 constexpr auto parse(ParseContext& ctx) ->
decltype(ctx.begin()) {
filament::Texture::InternalFormat format
Definition FilamentResourceManager.cpp:195
Definition IJsonConvertible.h:85
REHandle< EntityType::IndexBuffer > IndexBufferHandle
Definition RendererHandle.h:139
std::ostream & operator<<(std::ostream &os, const REHandle_abstract &uid)
Definition RendererHandle.cpp:19
REHandle< EntityType::Material > MaterialHandle
Definition RendererHandle.h:134
REHandle< EntityType::VertexBuffer > VertexBufferHandle
Definition RendererHandle.h:138
REHandle< EntityType::Scene > SceneHandle
Definition RendererHandle.h:128
EntityType
Definition RendererHandle.h:23
REHandle< EntityType::MaterialInstance > MaterialInstanceHandle
Definition RendererHandle.h:135
REHandle< EntityType::Geometry > GeometryHandle
Definition RendererHandle.h:129
REHandle< EntityType::Camera > CameraHandle
Definition RendererHandle.h:133
REHandle< EntityType::RenderTarget > RenderTargetHandle
Definition RendererHandle.h:137
REHandle< EntityType::Light > LightHandle
Definition RendererHandle.h:130
REHandle< EntityType::Texture > TextureHandle
Definition RendererHandle.h:136
REHandle< EntityType::Skybox > SkyboxHandle
Definition RendererHandle.h:132
REHandle< EntityType::View > ViewHandle
Definition RendererHandle.h:127
REHandle< EntityType::IndirectLight > IndirectLightHandle
Definition RendererHandle.h:131
Definition PinholeCameraIntrinsic.cpp:16
Definition RendererHandle.h:47
static std::array< std::uint16_t, static_cast< size_t >(EntityType::Count)> uid_table
Definition RendererHandle.h:80
bool operator!=(const REHandle_abstract &other) const
Definition RendererHandle.h:61
std::uint16_t GetId() const
Definition RendererHandle.h:73
bool operator<(const REHandle_abstract &other) const
Definition RendererHandle.h:65
const EntityType type
Definition RendererHandle.h:51
std::uint16_t id
Definition RendererHandle.h:82
size_t Hash() const
Definition RendererHandle.h:53
bool operator==(const REHandle_abstract &other) const
Definition RendererHandle.h:57
REHandle_abstract(const EntityType aType, const std::uint16_t aId)
Definition RendererHandle.h:76
REHandle_abstract()
Definition RendererHandle.h:71
static const char * TypeToString(EntityType type)
Definition RendererHandle.cpp:25
static const std::uint16_t kBadId
Definition RendererHandle.h:50
Definition RendererHandle.h:90
REHandle & operator=(const REHandle &other)
Definition RendererHandle.h:118
REHandle(std::uint16_t id)
Definition RendererHandle.h:116
static REHandle Next()
Definition RendererHandle.h:93
REHandle(const REHandle &other)
Definition RendererHandle.h:114
static REHandle Concretize(const REHandle_abstract &abstract)
Definition RendererHandle.h:104
REHandle()
Definition RendererHandle.h:113
static const REHandle kBad
Definition RendererHandle.h:91