Skip to content

Commit 625285e

Browse files
authored
Add XR_MSFT_scene_understanding_preview extension (#67)
* Update scene understanding sample project * Fix compatible with 104 preview runtime.
1 parent d15a933 commit 625285e

36 files changed

Lines changed: 5018 additions & 232 deletions

Directory.Build.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,13 @@
1111

1212
<SharedPath>$(MSBuildThisFileDirectory)shared</SharedPath>
1313
<OpenXrSdkPath>$(MSBuildThisFileDirectory)openxr_preview</OpenXrSdkPath>
14+
15+
<ItemDefinitionGroup>
16+
<ClCompile>
17+
<TreatWarningAsError>true</TreatWarningAsError>
18+
<ConformanceMode>true</ConformanceMode>
19+
</ClCompile>
20+
</ItemDefinitionGroup>
21+
1422
</PropertyGroup>
1523
</Project>

Samples.sln

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EyeGazeInteractionUwp", "sa
7070
EndProject
7171
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gltf", "gltf", "{B447EDAD-798F-4A24-9FDA-667C468AF5D9}"
7272
EndProject
73+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SceneUnderstandingUwp", "samples\SceneUnderstandingUwp\SceneUnderstandingUwp.vcxproj", "{461369E8-6324-4294-AB6F-C169BAC9ACCA}"
74+
EndProject
7375
Global
7476
GlobalSection(SolutionConfigurationPlatforms) = preSolution
7577
Debug|ARM = Debug|ARM
@@ -278,6 +280,30 @@ Global
278280
{A4D2019B-622D-49B9-9510-16877979807A}.Release|x86.ActiveCfg = Release|Win32
279281
{A4D2019B-622D-49B9-9510-16877979807A}.Release|x86.Build.0 = Release|Win32
280282
{A4D2019B-622D-49B9-9510-16877979807A}.Release|x86.Deploy.0 = Release|Win32
283+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM.ActiveCfg = Debug|ARM
284+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM.Build.0 = Debug|ARM
285+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM.Deploy.0 = Debug|ARM
286+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM64.ActiveCfg = Debug|ARM64
287+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM64.Build.0 = Debug|ARM64
288+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|ARM64.Deploy.0 = Debug|ARM64
289+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x64.ActiveCfg = Debug|x64
290+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x64.Build.0 = Debug|x64
291+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x64.Deploy.0 = Debug|x64
292+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x86.ActiveCfg = Debug|Win32
293+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x86.Build.0 = Debug|Win32
294+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Debug|x86.Deploy.0 = Debug|Win32
295+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM.ActiveCfg = Release|ARM
296+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM.Build.0 = Release|ARM
297+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM.Deploy.0 = Release|ARM
298+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM64.ActiveCfg = Release|ARM64
299+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM64.Build.0 = Release|ARM64
300+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|ARM64.Deploy.0 = Release|ARM64
301+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x64.ActiveCfg = Release|x64
302+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x64.Build.0 = Release|x64
303+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x64.Deploy.0 = Release|x64
304+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x86.ActiveCfg = Release|Win32
305+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x86.Build.0 = Release|Win32
306+
{461369E8-6324-4294-AB6F-C169BAC9ACCA}.Release|x86.Deploy.0 = Release|Win32
281307
EndGlobalSection
282308
GlobalSection(SolutionProperties) = preSolution
283309
HideSolutionNode = FALSE

openxr_preview/include/openxr/openxr.h

Lines changed: 302 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ typedef enum XrResult {
189189
XR_SPATIAL_ANCHOR_EXPORT_DATA_UNAVAILABLE_MSFT = 1000062000,
190190
XR_ERROR_SPATIAL_ANCHOR_EXPORT_FAILED_MSFT = -1000062000,
191191
XR_ERROR_SPATIAL_ANCHOR_SUFFICIENCY_QUERY_FAILED_MSFT = -1000062001,
192+
XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT = -1000097000,
193+
XR_ERROR_SCENE_OBJECT_KEY_INVALID_MSFT = -1000097001,
194+
XR_ERROR_SCENE_MESH_KEY_INVALID_MSFT = -1000097002,
195+
XR_ERROR_SCENE_PLANE_KEY_INVALID_MSFT = -1000097003,
196+
XR_ERROR_SERIALIZATION_NOT_REQUESTED_MSFT = -1000098000,
192197
XR_RESULT_MAX_ENUM = 0x7FFFFFFF
193198
} XrResult;
194199

@@ -315,6 +320,23 @@ typedef enum XrStructureType {
315320
XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR = 1000091000,
316321
XR_TYPE_SPATIAL_ANCHOR_EXPORT_PURPOSE_INFO_MSFT = 1000062000,
317322
XR_TYPE_SPATIAL_ANCHOR_EXPORT_SUFFICIENCY_MSFT = 1000062001,
323+
XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT = 1000097000,
324+
XR_TYPE_SCENE_CREATE_INFO_MSFT = 1000097001,
325+
XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT = 1000097002,
326+
XR_TYPE_SCENE_OBJECT_MSFT = 1000097003,
327+
XR_TYPE_SCENE_OBJECT_PROPERTIES_GET_INFO_MSFT = 1000097004,
328+
XR_TYPE_SCENE_OBJECT_PROPERTIES_MSFT = 1000097005,
329+
XR_TYPE_SCENE_OBJECT_KIND_MSFT = 1000097006,
330+
XR_TYPE_SCENE_MESH_KEYS_MSFT = 1000097007,
331+
XR_TYPE_SCENE_PLANE_KEYS_MSFT = 1000097008,
332+
XR_TYPE_SCENE_MESH_GET_INFO_MSFT = 1000097009,
333+
XR_TYPE_SCENE_MESH_MSFT = 1000097010,
334+
XR_TYPE_SCENE_PLANE_PROPERTIES_GET_INFO_MSFT = 1000097011,
335+
XR_TYPE_SCENE_PLANE_PROPERTIES_MSFT = 1000097012,
336+
XR_TYPE_SCENE_OBJECTS_LOCATE_INFO_MSFT = 1000097013,
337+
XR_TYPE_SCENE_OBJECT_LOCATIONS_MSFT = 1000097014,
338+
XR_TYPE_DESERIALIZE_SCENE_INFO_MSFT = 1000098000,
339+
XR_TYPE_SERIALIZE_SCENE_MSFT = 1000098001,
318340
XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR,
319341
XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR,
320342
XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR,
@@ -391,6 +413,8 @@ typedef enum XrObjectType {
391413
XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT = 1000039000,
392414
XR_OBJECT_TYPE_HAND_TRACKER_EXT = 1000051000,
393415
XR_OBJECT_TYPE_SPATIAL_ANCHOR_NEIGHBORHOOD_DATA_STREAM_MSFT = 1000062000,
416+
XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT = 1000097000,
417+
XR_OBJECT_TYPE_SCENE_MSFT = 1000097001,
394418
XR_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
395419
} XrObjectType;
396420
typedef XrFlags64 XrInstanceCreateFlags;
@@ -2243,6 +2267,284 @@ typedef struct XrInteractionProfileAnalogThresholdVALVE {
22432267
#define XR_MND_swapchain_usage_input_attachment_bit_SPEC_VERSION 2
22442268
#define XR_MND_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_MND_swapchain_usage_input_attachment_bit"
22452269

2270+
2271+
#define XR_MSFT_scene_understanding_preview 1
2272+
2273+
XR_DEFINE_ATOM(XrSceneObjectKeyMSFT)
2274+
2275+
2276+
XR_DEFINE_ATOM(XrSceneMeshKeyMSFT)
2277+
2278+
2279+
XR_DEFINE_ATOM(XrScenePlaneKeyMSFT)
2280+
2281+
2282+
XR_DEFINE_HANDLE(XrSceneObserverMSFT)
2283+
2284+
2285+
XR_DEFINE_HANDLE(XrSceneMSFT)
2286+
2287+
#define XR_MSFT_scene_understanding_preview_SPEC_VERSION 1
2288+
#define XR_MSFT_SCENE_UNDERSTANDING_PREVIEW_EXTENSION_NAME "XR_MSFT_scene_understanding_preview"
2289+
2290+
typedef enum XrSceneObjectKindTypeMSFT {
2291+
XR_SCENE_OBJECT_KIND_TYPE_UNKNOWN_MSFT = 0,
2292+
XR_SCENE_OBJECT_KIND_TYPE_BACKGROUND_MSFT = 1,
2293+
XR_SCENE_OBJECT_KIND_TYPE_WALL_MSFT = 2,
2294+
XR_SCENE_OBJECT_KIND_TYPE_FLOOR_MSFT = 3,
2295+
XR_SCENE_OBJECT_KIND_TYPE_CEILING_MSFT = 4,
2296+
XR_SCENE_OBJECT_KIND_TYPE_PLATFORM_MSFT = 5,
2297+
XR_SCENE_OBJECT_KIND_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2298+
} XrSceneObjectKindTypeMSFT;
2299+
2300+
typedef enum XrScenePlaneAlignmentTypeMSFT {
2301+
XR_SCENE_PLANE_ALIGNMENT_TYPE_NON_ORTHOGONAL_MSFT = 0,
2302+
XR_SCENE_PLANE_ALIGNMENT_TYPE_HORIZONTAL_MSFT = 1,
2303+
XR_SCENE_PLANE_ALIGNMENT_TYPE_VERTICAL_MSFT = 2,
2304+
XR_SCENE_PLANE_ALIGNMENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2305+
} XrScenePlaneAlignmentTypeMSFT;
2306+
2307+
typedef enum XrSceneComputeStateMSFT {
2308+
XR_SCENE_COMPUTE_STATE_NONE_MSFT = 0,
2309+
XR_SCENE_COMPUTE_STATE_UPDATING_MSFT = 1,
2310+
XR_SCENE_COMPUTE_STATE_COMPLETED_MSFT = 2,
2311+
XR_SCENE_COMPUTE_STATE_MAX_ENUM_MSFT = 0x7FFFFFFF
2312+
} XrSceneComputeStateMSFT;
2313+
typedef struct XrSceneObserverCreateInfoMSFT {
2314+
XrStructureType type;
2315+
const void* XR_MAY_ALIAS next;
2316+
} XrSceneObserverCreateInfoMSFT;
2317+
2318+
typedef struct XrSceneCreateInfoMSFT {
2319+
XrStructureType type;
2320+
const void* XR_MAY_ALIAS next;
2321+
} XrSceneCreateInfoMSFT;
2322+
2323+
typedef struct XrSceneSphereBoundMSFT {
2324+
XrVector3f center;
2325+
float radius;
2326+
} XrSceneSphereBoundMSFT;
2327+
2328+
typedef struct XrSceneOrientedBoxBoundMSFT {
2329+
XrPosef pose;
2330+
XrVector3f extents;
2331+
} XrSceneOrientedBoxBoundMSFT;
2332+
2333+
typedef struct XrSceneFrustumBoundMSFT {
2334+
XrPosef pose;
2335+
XrFovf fov;
2336+
float farDistance;
2337+
} XrSceneFrustumBoundMSFT;
2338+
2339+
typedef struct XrSceneBoundsMSFT {
2340+
XrSpace space;
2341+
XrTime time;
2342+
uint32_t sphereCount;
2343+
const XrSceneSphereBoundMSFT* spheres;
2344+
uint32_t boxCount;
2345+
const XrSceneOrientedBoxBoundMSFT* boxes;
2346+
uint32_t frustumCount;
2347+
const XrSceneFrustumBoundMSFT* frustums;
2348+
} XrSceneBoundsMSFT;
2349+
2350+
typedef struct XrNewSceneComputeInfoMSFT {
2351+
XrStructureType type;
2352+
const void* XR_MAY_ALIAS next;
2353+
XrBool32 disableInferredSceneObjects;
2354+
XrSceneBoundsMSFT bounds;
2355+
} XrNewSceneComputeInfoMSFT;
2356+
2357+
typedef struct XrSceneObjectMSFT {
2358+
XrStructureType type;
2359+
void* XR_MAY_ALIAS next;
2360+
XrSceneObjectKeyMSFT sceneObjectKey;
2361+
} XrSceneObjectMSFT;
2362+
2363+
typedef struct XrSceneObjectPropertiesGetInfoMSFT {
2364+
XrStructureType type;
2365+
const void* XR_MAY_ALIAS next;
2366+
XrSceneObjectKeyMSFT sceneObjectKey;
2367+
} XrSceneObjectPropertiesGetInfoMSFT;
2368+
2369+
typedef struct XrSceneObjectPropertiesMSFT {
2370+
XrStructureType type;
2371+
void* XR_MAY_ALIAS next;
2372+
XrPosef poseInScene;
2373+
} XrSceneObjectPropertiesMSFT;
2374+
2375+
typedef struct XrSceneObjectKindMSFT {
2376+
XrStructureType type;
2377+
void* XR_MAY_ALIAS next;
2378+
XrSceneObjectKindTypeMSFT kind;
2379+
} XrSceneObjectKindMSFT;
2380+
2381+
typedef struct XrSceneMeshKeysMSFT {
2382+
XrStructureType type;
2383+
void* XR_MAY_ALIAS next;
2384+
uint32_t meshKeyCapacityInput;
2385+
uint32_t meshKeyCountOutput;
2386+
XrSceneMeshKeyMSFT* meshKeys;
2387+
} XrSceneMeshKeysMSFT;
2388+
2389+
typedef struct XrScenePlaneKeysMSFT {
2390+
XrStructureType type;
2391+
void* XR_MAY_ALIAS next;
2392+
uint32_t planeKeyCapacityInput;
2393+
uint32_t planeKeyCountOutput;
2394+
XrScenePlaneKeyMSFT* planeKeys;
2395+
} XrScenePlaneKeysMSFT;
2396+
2397+
typedef struct XrSceneMeshGetInfoMSFT {
2398+
XrStructureType type;
2399+
const void* XR_MAY_ALIAS next;
2400+
XrSceneMeshKeyMSFT sceneMeshKey;
2401+
} XrSceneMeshGetInfoMSFT;
2402+
2403+
typedef struct XrSceneMeshMSFT {
2404+
XrStructureType type;
2405+
void* XR_MAY_ALIAS next;
2406+
uint32_t vertexCapacityInput;
2407+
uint32_t vertexCountOutput;
2408+
XrVector3f* vertices;
2409+
uint32_t indexCapacityInput;
2410+
uint32_t indexCountOutput;
2411+
uint32_t* indices;
2412+
} XrSceneMeshMSFT;
2413+
2414+
typedef struct XrScenePlanePropertiesGetInfoMSFT {
2415+
XrStructureType type;
2416+
const void* XR_MAY_ALIAS next;
2417+
XrScenePlaneKeyMSFT scenePlaneKey;
2418+
} XrScenePlanePropertiesGetInfoMSFT;
2419+
2420+
typedef struct XrScenePlanePropertiesMSFT {
2421+
XrStructureType type;
2422+
void* XR_MAY_ALIAS next;
2423+
XrExtent2Df extents;
2424+
XrScenePlaneAlignmentTypeMSFT alignment;
2425+
} XrScenePlanePropertiesMSFT;
2426+
2427+
typedef struct XrSceneObjectsLocateInfoMSFT {
2428+
XrStructureType type;
2429+
const void* XR_MAY_ALIAS next;
2430+
XrSpace baseSpace;
2431+
XrTime time;
2432+
uint32_t sceneObjectCount;
2433+
const XrSceneObjectKeyMSFT* sceneObjectKeys;
2434+
} XrSceneObjectsLocateInfoMSFT;
2435+
2436+
typedef struct XrSceneObjectLocationMSFT {
2437+
XrSpaceLocationFlags locationFlags;
2438+
XrPosef pose;
2439+
} XrSceneObjectLocationMSFT;
2440+
2441+
typedef struct XrSceneObjectLocationsMSFT {
2442+
XrStructureType type;
2443+
void* XR_MAY_ALIAS next;
2444+
uint32_t sceneObjectCount;
2445+
XrSceneObjectLocationMSFT* sceneObjectLocations;
2446+
} XrSceneObjectLocationsMSFT;
2447+
2448+
typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneObserverMSFT)(XrSession session, const XrSceneObserverCreateInfoMSFT* createInfo, XrSceneObserverMSFT* sceneObserver);
2449+
typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneObserverMSFT)(XrSceneObserverMSFT sceneObserver);
2450+
typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrSceneCreateInfoMSFT* createInfo, XrSceneMSFT* scene);
2451+
typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneMSFT)(XrSceneMSFT scene);
2452+
typedef XrResult (XRAPI_PTR *PFN_xrComputeNewSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrNewSceneComputeInfoMSFT* computeInfo);
2453+
typedef XrResult (XRAPI_PTR *PFN_xrGetSceneComputeStateMSFT)(XrSceneObserverMSFT sceneObserver, XrSceneComputeStateMSFT* state);
2454+
typedef XrResult (XRAPI_PTR *PFN_xrLocateSceneObjectsMSFT)(XrSceneMSFT scene, const XrSceneObjectsLocateInfoMSFT* locateInfo, XrSceneObjectLocationsMSFT* locations);
2455+
typedef XrResult (XRAPI_PTR *PFN_xrGetSceneObjectsMSFT)(XrSceneMSFT scene, uint32_t sceneObjectCapacityInput, uint32_t* sceneObjectCountOutput, XrSceneObjectMSFT* sceneObjects);
2456+
typedef XrResult (XRAPI_PTR *PFN_xrGetSceneObjectPropertiesMSFT)(XrSceneMSFT scene, const XrSceneObjectPropertiesGetInfoMSFT* getInfo, XrSceneObjectPropertiesMSFT* properties);
2457+
typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMeshMSFT)(XrSceneMSFT scene, const XrSceneMeshGetInfoMSFT* getInfo, XrSceneMeshMSFT* mesh);
2458+
typedef XrResult (XRAPI_PTR *PFN_xrGetScenePlanePropertiesMSFT)(XrSceneMSFT scene, const XrScenePlanePropertiesGetInfoMSFT* getInfo, XrScenePlanePropertiesMSFT* properties);
2459+
2460+
#ifndef XR_NO_PROTOTYPES
2461+
XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneObserverMSFT(
2462+
XrSession session,
2463+
const XrSceneObserverCreateInfoMSFT* createInfo,
2464+
XrSceneObserverMSFT* sceneObserver);
2465+
2466+
XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneObserverMSFT(
2467+
XrSceneObserverMSFT sceneObserver);
2468+
2469+
XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneMSFT(
2470+
XrSceneObserverMSFT sceneObserver,
2471+
const XrSceneCreateInfoMSFT* createInfo,
2472+
XrSceneMSFT* scene);
2473+
2474+
XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneMSFT(
2475+
XrSceneMSFT scene);
2476+
2477+
XRAPI_ATTR XrResult XRAPI_CALL xrComputeNewSceneMSFT(
2478+
XrSceneObserverMSFT sceneObserver,
2479+
const XrNewSceneComputeInfoMSFT* computeInfo);
2480+
2481+
XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComputeStateMSFT(
2482+
XrSceneObserverMSFT sceneObserver,
2483+
XrSceneComputeStateMSFT* state);
2484+
2485+
XRAPI_ATTR XrResult XRAPI_CALL xrLocateSceneObjectsMSFT(
2486+
XrSceneMSFT scene,
2487+
const XrSceneObjectsLocateInfoMSFT* locateInfo,
2488+
XrSceneObjectLocationsMSFT* locations);
2489+
2490+
XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneObjectsMSFT(
2491+
XrSceneMSFT scene,
2492+
uint32_t sceneObjectCapacityInput,
2493+
uint32_t* sceneObjectCountOutput,
2494+
XrSceneObjectMSFT* sceneObjects);
2495+
2496+
XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneObjectPropertiesMSFT(
2497+
XrSceneMSFT scene,
2498+
const XrSceneObjectPropertiesGetInfoMSFT* getInfo,
2499+
XrSceneObjectPropertiesMSFT* properties);
2500+
2501+
XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMeshMSFT(
2502+
XrSceneMSFT scene,
2503+
const XrSceneMeshGetInfoMSFT* getInfo,
2504+
XrSceneMeshMSFT* mesh);
2505+
2506+
XRAPI_ATTR XrResult XRAPI_CALL xrGetScenePlanePropertiesMSFT(
2507+
XrSceneMSFT scene,
2508+
const XrScenePlanePropertiesGetInfoMSFT* getInfo,
2509+
XrScenePlanePropertiesMSFT* properties);
2510+
#endif
2511+
2512+
2513+
#define XR_MSFT_scene_understanding_serialization_preview 1
2514+
#define XR_MSFT_scene_understanding_serialization_preview_SPEC_VERSION 1
2515+
#define XR_MSFT_SCENE_UNDERSTANDING_SERIALIZATION_PREVIEW_EXTENSION_NAME "XR_MSFT_scene_understanding_serialization_preview"
2516+
typedef struct XrDeserializeSceneFragmentMSFT {
2517+
uint32_t size;
2518+
const uint8_t* buffer;
2519+
} XrDeserializeSceneFragmentMSFT;
2520+
2521+
typedef struct XrDeserializeSceneInfoMSFT {
2522+
XrStructureType type;
2523+
const void* XR_MAY_ALIAS next;
2524+
uint32_t fragmentCount;
2525+
const XrDeserializeSceneFragmentMSFT* fragments;
2526+
} XrDeserializeSceneInfoMSFT;
2527+
2528+
typedef struct XrSerializeSceneMSFT {
2529+
XrStructureType type;
2530+
const void* XR_MAY_ALIAS next;
2531+
} XrSerializeSceneMSFT;
2532+
2533+
typedef XrResult (XRAPI_PTR *PFN_xrDeserializeSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrDeserializeSceneInfoMSFT* deserializeInfo);
2534+
typedef XrResult (XRAPI_PTR *PFN_xrGetSceneSerializedDataMSFT)(XrSceneMSFT scene, uint32_t countInput, uint32_t* readOutput, uint8_t* buffer);
2535+
2536+
#ifndef XR_NO_PROTOTYPES
2537+
XRAPI_ATTR XrResult XRAPI_CALL xrDeserializeSceneMSFT(
2538+
XrSceneObserverMSFT sceneObserver,
2539+
const XrDeserializeSceneInfoMSFT* deserializeInfo);
2540+
2541+
XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneSerializedDataMSFT(
2542+
XrSceneMSFT scene,
2543+
uint32_t countInput,
2544+
uint32_t* readOutput,
2545+
uint8_t* buffer);
2546+
#endif
2547+
22462548
#ifdef __cplusplus
22472549
}
22482550
#endif

0 commit comments

Comments
 (0)