VTK  9.4.20250227
XrExtensions.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright (c) Microsoft
3// SPDX-License-Identifier: BSD-3-Clause AND Apache-2.0
19#ifndef XrExtensions_h
20#define XrExtensions_h
21
22#if XR_KHR_visibility_mask
23#define FOR_EACH_VISIBILITY_MASK_FUNCTION(_) _(xrGetVisibilityMaskKHR)
24#else
25#define FOR_EACH_VISIBILITY_MASK_FUNCTION(_)
26#endif
27
28#ifdef XR_MSFT_controller_model
29#define FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_) \
30 _(xrGetControllerModelKeyMSFT) \
31 _(xrLoadControllerModelMSFT) \
32 _(xrGetControllerModelPropertiesMSFT) \
33 _(xrGetControllerModelStateMSFT)
34#else
35#define FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_)
36#endif
37
38#if XR_MSFT_perception_anchor_interop && defined(XR_USE_PLATFORM_WIN32)
39#define FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_) \
40 _(xrCreateSpatialAnchorFromPerceptionAnchorMSFT) \
41 _(xrTryGetPerceptionAnchorFromSpatialAnchorMSFT)
42#else
43#define FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_)
44#endif
45
46#if XR_MSFT_spatial_anchor
47#define FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_) \
48 _(xrCreateSpatialAnchorMSFT) \
49 _(xrCreateSpatialAnchorSpaceMSFT) \
50 _(xrDestroySpatialAnchorMSFT)
51#else
52#define FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_)
53#endif
54
55#if XR_EXT_hand_tracking
56#define FOR_EACH_HAND_TRACKING_FUNCTION(_) \
57 _(xrCreateHandTrackerEXT) \
58 _(xrDestroyHandTrackerEXT) \
59 _(xrLocateHandJointsEXT)
60#else
61#define FOR_EACH_HAND_TRACKING_FUNCTION(_)
62#endif
63
64#if XR_MSFT_hand_tracking_mesh
65#define FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_) \
66 _(xrCreateHandMeshSpaceMSFT) \
67 _(xrUpdateHandMeshMSFT)
68#else
69#define FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_)
70#endif
71
72#if XR_MSFT_spatial_graph_bridge
73#define FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_) _(xrCreateSpatialGraphNodeSpaceMSFT)
74#else
75#define FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_)
76#endif
77
78#if XR_MSFT_scene_understanding
79#define FOR_EACH_SCENE_UNDERSTANDING_FUNCTION(_) \
80 _(xrCreateSceneObserverMSFT) \
81 _(xrDestroySceneObserverMSFT) \
82 _(xrCreateSceneMSFT) \
83 _(xrDestroySceneMSFT) \
84 _(xrComputeNewSceneMSFT) \
85 _(xrGetSceneComputeStateMSFT) \
86 _(xrGetSceneComponentsMSFT) \
87 _(xrLocateSceneComponentsMSFT) \
88 _(xrGetSceneMeshBuffersMSFT) \
89 _(xrEnumerateSceneComputeFeaturesMSFT)
90#else
91#define FOR_EACH_SCENE_UNDERSTANDING_FUNCTION(_)
92#endif
93
94#if XR_MSFT_scene_marker
95#define FOR_EACH_SCENE_MARKER_FUNCTION(_) \
96 _(xrGetSceneMarkerRawDataMSFT) \
97 _(xrGetSceneMarkerDecodedStringMSFT)
98#else
99#define FOR_EACH_SCENE_MARKER_FUNCTION(_)
100#endif
101
102#if XR_MSFT_scene_understanding_serialization_preview
103#define FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_) \
104 _(xrDeserializeSceneMSFT) \
105 _(xrGetSceneSerializedDataMSFT)
106
107#else
108#define FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_)
109#endif
110
111#define FOR_EACH_EXTENSION_FUNCTION(_) \
112 FOR_EACH_VISIBILITY_MASK_FUNCTION(_) \
113 FOR_EACH_HAND_TRACKING_FUNCTION(_) \
114 FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_) \
115 FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_) \
116 FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_) \
117 FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_) \
118 FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_) \
119 FOR_EACH_SCENE_UNDERSTANDING_FUNCTION(_) \
120 FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_) \
121 FOR_EACH_SCENE_MARKER_FUNCTION(_)
122
123#define GET_INSTANCE_PROC_ADDRESS(name) \
124 (void)xrGetInstanceProcAddr( \
125 instance, #name, reinterpret_cast<PFN_xrVoidFunction*>(const_cast<PFN_##name*>(&name)));
126#define DEFINE_PROC_MEMBER(name) PFN_##name name{ nullptr };
127
128namespace xr
129{
130VTK_ABI_NAMESPACE_BEGIN
132{
134
136 void PopulateDispatchTable(XrInstance instance)
137 {
139 }
140};
141VTK_ABI_NAMESPACE_END
142} // namespace xr
143
144#undef DEFINE_PROC_MEMBER
145#undef GET_INSTANCE_PROC_ADDRESS
146#undef FOR_EACH_EXTENSION_FUNCTION
147
148#endif
#define DEFINE_PROC_MEMBER(name)
#define FOR_EACH_EXTENSION_FUNCTION(_)
#define GET_INSTANCE_PROC_ADDRESS(name)
void PopulateDispatchTable(XrInstance instance)
FOR_EACH_EXTENSION_FUNCTION(DEFINE_PROC_MEMBER)