19 #ifndef XrExtensions_h
20 #define XrExtensions_h
22 #if XR_KHR_visibility_mask
23 #define FOR_EACH_VISIBILITY_MASK_FUNCTION(_) _(xrGetVisibilityMaskKHR)
25 #define FOR_EACH_VISIBILITY_MASK_FUNCTION(_)
28 #ifdef XR_MSFT_controller_model
29 #define FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_) \
30 _(xrGetControllerModelKeyMSFT) \
31 _(xrLoadControllerModelMSFT) \
32 _(xrGetControllerModelPropertiesMSFT) \
33 _(xrGetControllerModelStateMSFT)
35 #define FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_)
38 #if XR_MSFT_perception_anchor_interop && defined(XR_USE_PLATFORM_WIN32)
39 #define FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_) \
40 _(xrCreateSpatialAnchorFromPerceptionAnchorMSFT) \
41 _(xrTryGetPerceptionAnchorFromSpatialAnchorMSFT)
43 #define FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_)
46 #if XR_MSFT_spatial_anchor
47 #define FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_) \
48 _(xrCreateSpatialAnchorMSFT) \
49 _(xrCreateSpatialAnchorSpaceMSFT) \
50 _(xrDestroySpatialAnchorMSFT)
52 #define FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_)
55 #if XR_EXT_hand_tracking
56 #define FOR_EACH_HAND_TRACKING_FUNCTION(_) \
57 _(xrCreateHandTrackerEXT) \
58 _(xrDestroyHandTrackerEXT) \
59 _(xrLocateHandJointsEXT)
61 #define FOR_EACH_HAND_TRACKING_FUNCTION(_)
64 #if XR_MSFT_hand_tracking_mesh
65 #define FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_) \
66 _(xrCreateHandMeshSpaceMSFT) \
67 _(xrUpdateHandMeshMSFT)
69 #define FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_)
72 #if XR_MSFT_spatial_graph_bridge
73 #define FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_) _(xrCreateSpatialGraphNodeSpaceMSFT)
75 #define FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_)
78 #if XR_MSFT_scene_understanding_preview2
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)
90 #define FOR_EACH_SCENE_UNDERSTANDING_FUNCTION(_)
93 #if XR_MSFT_scene_understanding_serialization_preview
94 #define FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_) \
95 _(xrDeserializeSceneMSFT) \
96 _(xrGetSceneSerializedDataMSFT)
99 #define FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_)
102 #define FOR_EACH_EXTENSION_FUNCTION(_) \
103 FOR_EACH_VISIBILITY_MASK_FUNCTION(_) \
104 FOR_EACH_HAND_TRACKING_FUNCTION(_) \
105 FOR_EACH_HAND_TRACKING_MESH_FUNCTION(_) \
106 FOR_EACH_SPATIAL_GRAPH_BRIDGE_FUNCTION(_) \
107 FOR_EACH_SPATIAL_ANCHOR_FUNCTION(_) \
108 FOR_EACH_CONTROLLER_MODEL_EXTENSION_FUNCTION(_) \
109 FOR_EACH_PERCEPTION_ANCHOR_INTEROP_FUNCTION(_) \
110 FOR_EACH_SCENE_UNDERSTANDING_FUNCTION(_) \
111 FOR_EACH_SCENE_UNDERSTANDING_SERIALIZATION_FUNCTION(_)
113 #define GET_INSTANCE_PROC_ADDRESS(name) \
114 (void)xrGetInstanceProcAddr( \
115 instance, #name, reinterpret_cast<PFN_xrVoidFunction*>(const_cast<PFN_##name*>(&name)));
116 #define DEFINE_PROC_MEMBER(name) PFN_##name name{ nullptr };
120 VTK_ABI_NAMESPACE_BEGIN
131 VTK_ABI_NAMESPACE_END
134 #undef DEFINE_PROC_MEMBER
135 #undef GET_INSTANCE_PROC_ADDRESS
136 #undef FOR_EACH_EXTENSION_FUNCTION
#define DEFINE_PROC_MEMBER(name)
#define GET_INSTANCE_PROC_ADDRESS(name)
void PopulateDispatchTable(XrInstance instance)
FOR_EACH_EXTENSION_FUNCTION(DEFINE_PROC_MEMBER)
ExtensionDispatchTable()=default