All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lwjgl.openxr.MSFTSpatialGraphBridge Maven / Gradle / Ivy

Go to download

A royalty-free, open standard that provides high-performance access to Augmented Reality (AR) and Virtual Reality (VR)—collectively known as XR—platforms and devices.

There is a newer version: 3.3.6
Show newest version
/*
 * Copyright LWJGL. All rights reserved.
 * License terms: https://www.lwjgl.org/license
 * MACHINE GENERATED FILE, DO NOT EDIT
 */
package org.lwjgl.openxr;

import org.jspecify.annotations.*;

import org.lwjgl.*;

import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;
import static org.lwjgl.system.MemoryUtil.*;

/**
 * The XR_MSFT_spatial_graph_bridge extension.
 * 
 * 

This extension enables applications to interop between {@code XrSpace} handles and other Windows Mixed Reality device platform libraries or APIs. These libraries represent a spatially tracked point, also known as a "spatial graph node", with a GUID value. This extension enables applications to create {@code XrSpace} handles from spatial graph nodes. Applications can also try to get a spatial graph node from an {@code XrSpace} handle.

*/ public class MSFTSpatialGraphBridge { /** The extension specification version. */ public static final int XR_MSFT_spatial_graph_bridge_SPEC_VERSION = 2; /** The extension name. */ public static final String XR_MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME = "XR_MSFT_spatial_graph_bridge"; /** XR_GUID_SIZE_MSFT */ public static final int XR_GUID_SIZE_MSFT = 16; /** Extends {@code XrObjectType}. */ public static final int XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT = 1000049000; /** * Extends {@code XrStructureType}. * *
Enum values:
* *
    *
  • {@link #XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT}
  • *
  • {@link #XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT}
  • *
  • {@link #XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT}
  • *
  • {@link #XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT}
  • *
*/ public static final int XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT = 1000049000, XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT = 1000049001, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT = 1000049002, XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT = 1000049003; /** * XrSpatialGraphNodeTypeMSFT - The type of spatial graph node. * *
Description
* *

There are two types of spatial graph nodes: static and dynamic.

* *

Static spatial nodes track the pose of a fixed location in the world relative to reference spaces. The tracking of static nodes may slowly adjust the pose over time for better accuracy but the pose is relatively stable in the short term, such as between rendering frames. For example, a QR code tracking library can use a static node to represent the location of the tracked QR code. Static spatial nodes are represented by {@link #XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT}.

* *

Dynamic spatial nodes track the pose of a physical object that moves continuously relative to reference spaces. The pose of dynamic spatial nodes can be very different within the duration of a rendering frame. It is important for the application to use the correct timestamp to query the space location using {@link XR10#xrLocateSpace LocateSpace}. For example, a color camera mounted in front of a HMD is also tracked by the HMD so a web camera library can use a dynamic node to represent the camera location. Dynamic spatial nodes are represented by {@link #XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT}.

* *
See Also
* *

{@link XrSpatialGraphNodeSpaceCreateInfoMSFT}, {@link #xrCreateSpatialGraphNodeSpaceMSFT CreateSpatialGraphNodeSpaceMSFT}

*/ public static final int XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT = 1, XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT = 2; protected MSFTSpatialGraphBridge() { throw new UnsupportedOperationException(); } // --- [ xrCreateSpatialGraphNodeSpaceMSFT ] --- /** Unsafe version of: {@link #xrCreateSpatialGraphNodeSpaceMSFT CreateSpatialGraphNodeSpaceMSFT} */ public static int nxrCreateSpatialGraphNodeSpaceMSFT(XrSession session, long createInfo, long space) { long __functionAddress = session.getCapabilities().xrCreateSpatialGraphNodeSpaceMSFT; if (CHECKS) { check(__functionAddress); } return callPPPI(session.address(), createInfo, space, __functionAddress); } /** * Create an {@code XrSpace} from a spatial graph node. * *
C Specification
* *

The {@link #xrCreateSpatialGraphNodeSpaceMSFT CreateSpatialGraphNodeSpaceMSFT} function creates an {@code XrSpace} handle for a given spatial graph node type and ID.

* *

     * XrResult xrCreateSpatialGraphNodeSpaceMSFT(
     *     XrSession                                   session,
     *     const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo,
     *     XrSpace*                                    space);
* *
Valid Usage (Implicit)
* *
    *
  • The {@link MSFTSpatialGraphBridge XR_MSFT_spatial_graph_bridge} extension must be enabled prior to calling {@link #xrCreateSpatialGraphNodeSpaceMSFT CreateSpatialGraphNodeSpaceMSFT}
  • *
  • {@code session} must be a valid {@code XrSession} handle
  • *
  • {@code createInfo} must be a pointer to a valid {@link XrSpatialGraphNodeSpaceCreateInfoMSFT} structure
  • *
  • {@code space} must be a pointer to an {@code XrSpace} handle
  • *
* *
Return Codes
* *
*
On success, this command returns
*
    *
  • {@link XR10#XR_SUCCESS SUCCESS}
  • *
  • {@link XR10#XR_SESSION_LOSS_PENDING SESSION_LOSS_PENDING}
  • *
*
On failure, this command returns
*
    *
  • {@link XR10#XR_ERROR_FUNCTION_UNSUPPORTED ERROR_FUNCTION_UNSUPPORTED}
  • *
  • {@link XR10#XR_ERROR_VALIDATION_FAILURE ERROR_VALIDATION_FAILURE}
  • *
  • {@link XR10#XR_ERROR_HANDLE_INVALID ERROR_HANDLE_INVALID}
  • *
  • {@link XR10#XR_ERROR_INSTANCE_LOST ERROR_INSTANCE_LOST}
  • *
  • {@link XR10#XR_ERROR_SESSION_LOST ERROR_SESSION_LOST}
  • *
  • {@link XR10#XR_ERROR_OUT_OF_MEMORY ERROR_OUT_OF_MEMORY}
  • *
  • {@link XR10#XR_ERROR_LIMIT_REACHED ERROR_LIMIT_REACHED}
  • *
  • {@link XR10#XR_ERROR_POSE_INVALID ERROR_POSE_INVALID}
  • *
*
* *
See Also
* *

{@link XrSpatialGraphNodeSpaceCreateInfoMSFT}

* * @param session the {@code XrSession} which will use the created space. * @param createInfo an {@link XrSpatialGraphNodeSpaceCreateInfoMSFT} specifying the space to be created. * @param space the returned {@code XrSpace} handle for the given spatial node ID. */ @NativeType("XrResult") public static int xrCreateSpatialGraphNodeSpaceMSFT(XrSession session, @NativeType("XrSpatialGraphNodeSpaceCreateInfoMSFT const *") XrSpatialGraphNodeSpaceCreateInfoMSFT createInfo, @NativeType("XrSpace *") PointerBuffer space) { if (CHECKS) { check(space, 1); } return nxrCreateSpatialGraphNodeSpaceMSFT(session, createInfo.address(), memAddress(space)); } // --- [ xrTryCreateSpatialGraphStaticNodeBindingMSFT ] --- /** Unsafe version of: {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT} */ public static int nxrTryCreateSpatialGraphStaticNodeBindingMSFT(XrSession session, long createInfo, long nodeBinding) { long __functionAddress = session.getCapabilities().xrTryCreateSpatialGraphStaticNodeBindingMSFT; if (CHECKS) { check(__functionAddress); XrSpatialGraphStaticNodeBindingCreateInfoMSFT.validate(createInfo); } return callPPPI(session.address(), createInfo, nodeBinding, __functionAddress); } /** * Try create spatial graph static node binding. * *
C Specification
* *

The {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT} function tries to create a binding to the best spatial graph static node relative to the given location and returns an {@code XrSpatialGraphNodeBindingMSFT} handle.

* *

     * XrResult xrTryCreateSpatialGraphStaticNodeBindingMSFT(
     *     XrSession                                   session,
     *     const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo,
     *     XrSpatialGraphNodeBindingMSFT*              nodeBinding);
* *
Description
* *

The runtime may return {@link XR10#XR_SUCCESS SUCCESS} and set {@code nodeBinding} to {@link XR10#XR_NULL_HANDLE NULL_HANDLE} if it is unable to create a spatial graph static node binding. This may happen when the given {@code XrSpace} cannot be properly tracked at the moment. The application can retry creating the {@code XrSpatialGraphNodeBindingMSFT} handle again after a reasonable period of time when tracking is regained.

* *

The {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT} function may be a slow operation and therefore should be invoked from a non-timing critical thread.

* *
Valid Usage (Implicit)
* *
    *
  • The {@link MSFTSpatialGraphBridge XR_MSFT_spatial_graph_bridge} extension must be enabled prior to calling {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT}
  • *
  • {@code session} must be a valid {@code XrSession} handle
  • *
  • {@code createInfo} must be a pointer to a valid {@link XrSpatialGraphStaticNodeBindingCreateInfoMSFT} structure
  • *
  • {@code nodeBinding} must be a pointer to an {@code XrSpatialGraphNodeBindingMSFT} handle
  • *
* *
Return Codes
* *
*
On success, this command returns
*
    *
  • {@link XR10#XR_SUCCESS SUCCESS}
  • *
  • {@link XR10#XR_SESSION_LOSS_PENDING SESSION_LOSS_PENDING}
  • *
*
On failure, this command returns
*
    *
  • {@link XR10#XR_ERROR_FUNCTION_UNSUPPORTED ERROR_FUNCTION_UNSUPPORTED}
  • *
  • {@link XR10#XR_ERROR_VALIDATION_FAILURE ERROR_VALIDATION_FAILURE}
  • *
  • {@link XR10#XR_ERROR_RUNTIME_FAILURE ERROR_RUNTIME_FAILURE}
  • *
  • {@link XR10#XR_ERROR_HANDLE_INVALID ERROR_HANDLE_INVALID}
  • *
  • {@link XR10#XR_ERROR_INSTANCE_LOST ERROR_INSTANCE_LOST}
  • *
  • {@link XR10#XR_ERROR_SESSION_LOST ERROR_SESSION_LOST}
  • *
  • {@link XR10#XR_ERROR_OUT_OF_MEMORY ERROR_OUT_OF_MEMORY}
  • *
  • {@link XR10#XR_ERROR_LIMIT_REACHED ERROR_LIMIT_REACHED}
  • *
  • {@link XR10#XR_ERROR_TIME_INVALID ERROR_TIME_INVALID}
  • *
  • {@link XR10#XR_ERROR_POSE_INVALID ERROR_POSE_INVALID}
  • *
*
* *
See Also
* *

{@link XrSpatialGraphStaticNodeBindingCreateInfoMSFT}, {@link #xrDestroySpatialGraphNodeBindingMSFT DestroySpatialGraphNodeBindingMSFT}

* * @param session the specified {@code XrSession}. * @param createInfo the {@link XrSpatialGraphStaticNodeBindingCreateInfoMSFT} input structure. * @param nodeBinding the {@code XrSpatialGraphNodeBindingMSFT} output structure. */ @NativeType("XrResult") public static int xrTryCreateSpatialGraphStaticNodeBindingMSFT(XrSession session, @NativeType("XrSpatialGraphStaticNodeBindingCreateInfoMSFT const *") XrSpatialGraphStaticNodeBindingCreateInfoMSFT createInfo, @NativeType("XrSpatialGraphNodeBindingMSFT *") PointerBuffer nodeBinding) { if (CHECKS) { check(nodeBinding, 1); } return nxrTryCreateSpatialGraphStaticNodeBindingMSFT(session, createInfo.address(), memAddress(nodeBinding)); } // --- [ xrDestroySpatialGraphNodeBindingMSFT ] --- /** * Destroy a spatial graph node handle. * *
C Specification
* *

The {@link #xrDestroySpatialGraphNodeBindingMSFT DestroySpatialGraphNodeBindingMSFT} function releases the {@code nodeBinding} and the underlying resources.

* *

     * XrResult xrDestroySpatialGraphNodeBindingMSFT(
     *     XrSpatialGraphNodeBindingMSFT               nodeBinding);
* *
Valid Usage (Implicit)
* *
    *
  • The {@link MSFTSpatialGraphBridge XR_MSFT_spatial_graph_bridge} extension must be enabled prior to calling {@link #xrDestroySpatialGraphNodeBindingMSFT DestroySpatialGraphNodeBindingMSFT}
  • *
  • {@code nodeBinding} must be a valid {@code XrSpatialGraphNodeBindingMSFT} handle
  • *
* *
Thread Safety
* *
    *
  • Access to {@code nodeBinding}, and any child handles, must be externally synchronized
  • *
* *
Return Codes
* *
*
On success, this command returns
*
    *
  • {@link XR10#XR_SUCCESS SUCCESS}
  • *
*
On failure, this command returns
*
    *
  • {@link XR10#XR_ERROR_FUNCTION_UNSUPPORTED ERROR_FUNCTION_UNSUPPORTED}
  • *
  • {@link XR10#XR_ERROR_HANDLE_INVALID ERROR_HANDLE_INVALID}
  • *
*
* *
See Also
* *

{@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT}

* * @param nodeBinding an {@code XrSpatialGraphNodeBindingMSFT} previously created by {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT}. */ @NativeType("XrResult") public static int xrDestroySpatialGraphNodeBindingMSFT(XrSpatialGraphNodeBindingMSFT nodeBinding) { long __functionAddress = nodeBinding.getCapabilities().xrDestroySpatialGraphNodeBindingMSFT; if (CHECKS) { check(__functionAddress); } return callPI(nodeBinding.address(), __functionAddress); } // --- [ xrGetSpatialGraphNodeBindingPropertiesMSFT ] --- /** Unsafe version of: {@link #xrGetSpatialGraphNodeBindingPropertiesMSFT GetSpatialGraphNodeBindingPropertiesMSFT} */ public static int nxrGetSpatialGraphNodeBindingPropertiesMSFT(XrSpatialGraphNodeBindingMSFT nodeBinding, long getInfo, long properties) { long __functionAddress = nodeBinding.getCapabilities().xrGetSpatialGraphNodeBindingPropertiesMSFT; if (CHECKS) { check(__functionAddress); } return callPPPI(nodeBinding.address(), getInfo, properties, __functionAddress); } /** * Destroy a spatial graph node handle. * *
C Specification
* *

The {@link #xrGetSpatialGraphNodeBindingPropertiesMSFT GetSpatialGraphNodeBindingPropertiesMSFT} function retrieves the spatial graph node GUID and the pose in the node space from an {@code XrSpatialGraphNodeBindingMSFT} handle.

* *

     * XrResult xrGetSpatialGraphNodeBindingPropertiesMSFT(
     *     XrSpatialGraphNodeBindingMSFT               nodeBinding,
     *     const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo,
     *     XrSpatialGraphNodeBindingPropertiesMSFT*    properties);
* *
Valid Usage (Implicit)
* *
    *
  • The {@link MSFTSpatialGraphBridge XR_MSFT_spatial_graph_bridge} extension must be enabled prior to calling {@link #xrGetSpatialGraphNodeBindingPropertiesMSFT GetSpatialGraphNodeBindingPropertiesMSFT}
  • *
  • {@code nodeBinding} must be a valid {@code XrSpatialGraphNodeBindingMSFT} handle
  • *
  • If {@code getInfo} is not {@code NULL}, {@code getInfo} must be a pointer to a valid {@link XrSpatialGraphNodeBindingPropertiesGetInfoMSFT} structure
  • *
  • {@code properties} must be a pointer to an {@link XrSpatialGraphNodeBindingPropertiesMSFT} structure
  • *
* *
Return Codes
* *
*
On success, this command returns
*
    *
  • {@link XR10#XR_SUCCESS SUCCESS}
  • *
  • {@link XR10#XR_SESSION_LOSS_PENDING SESSION_LOSS_PENDING}
  • *
*
On failure, this command returns
*
    *
  • {@link XR10#XR_ERROR_FUNCTION_UNSUPPORTED ERROR_FUNCTION_UNSUPPORTED}
  • *
  • {@link XR10#XR_ERROR_VALIDATION_FAILURE ERROR_VALIDATION_FAILURE}
  • *
  • {@link XR10#XR_ERROR_RUNTIME_FAILURE ERROR_RUNTIME_FAILURE}
  • *
  • {@link XR10#XR_ERROR_HANDLE_INVALID ERROR_HANDLE_INVALID}
  • *
  • {@link XR10#XR_ERROR_INSTANCE_LOST ERROR_INSTANCE_LOST}
  • *
  • {@link XR10#XR_ERROR_SESSION_LOST ERROR_SESSION_LOST}
  • *
  • {@link XR10#XR_ERROR_OUT_OF_MEMORY ERROR_OUT_OF_MEMORY}
  • *
*
* *
See Also
* *

{@link XrSpatialGraphNodeBindingPropertiesGetInfoMSFT}, {@link XrSpatialGraphNodeBindingPropertiesMSFT}, {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT}

* * @param nodeBinding an {@code XrSpatialGraphNodeBindingMSFT} previously created by {@link #xrTryCreateSpatialGraphStaticNodeBindingMSFT TryCreateSpatialGraphStaticNodeBindingMSFT}. * @param getInfo a pointer to an {@link XrSpatialGraphNodeBindingPropertiesGetInfoMSFT} input structure. * @param properties a pointer to an {@link XrSpatialGraphNodeBindingPropertiesMSFT} output structure. */ @NativeType("XrResult") public static int xrGetSpatialGraphNodeBindingPropertiesMSFT(XrSpatialGraphNodeBindingMSFT nodeBinding, @NativeType("XrSpatialGraphNodeBindingPropertiesGetInfoMSFT const *") @Nullable XrSpatialGraphNodeBindingPropertiesGetInfoMSFT getInfo, @NativeType("XrSpatialGraphNodeBindingPropertiesMSFT *") XrSpatialGraphNodeBindingPropertiesMSFT properties) { return nxrGetSpatialGraphNodeBindingPropertiesMSFT(nodeBinding, memAddressSafe(getInfo), properties.address()); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy