XR_ANDROID_geospatial_anchor
Name String
XR_ANDROID_geospatial_anchor
एक्सटेंशन का टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
798
बदलाव
1
पुष्टि की स्थिति
मंज़ूरी नहीं मिली
एक्सटेंशन और वर्शन डिपेंडेंसी
XR_ANDROID_geospatial
और
XR_EXT_future
और
XR_EXT_spatial_entity
और
XR_EXT_spatial_anchor
पिछली बार बदलाव किए जाने की तारीख
2025-10-30
आईपी स्टेटस
बौद्धिक संपत्ति से जुड़े किसी दावे की जानकारी नहीं है.
योगदान देने वाले
जॉन उलमैन, Google
बेन किंग, Google
निहाव जैन, Google
जैरेड फ़ाइंडर, Google
खास जानकारी
यह एक्सटेंशन, जियोस्पेशल ऐंकर और सरफ़ेस ऐंकर उपलब्ध कराता है. ये ऐंकर, जियोस्पेशल एक्सटेंशन पर आधारित होते हैं. जियोस्पेशियल ऐंकर ऐसे ऐंकर होते हैं जो किसी दिए गए अक्षांश, देशांतर, और ऊंचाई पर पृथ्वी के हिसाब से स्पेस में रखे जाते हैं. सरफ़ेस ऐंकर, पृथ्वी के हिसाब से तय किए गए ऐंकर होते हैं. इन्हें विज़ुअल पोज़िशनिंग सर्विस के हिसाब से, किसी सतह के अक्षांश, देशांतर, और ऊंचाई पर रखा जाता है. जैसे-जैसे पृथ्वी के हिसाब से रनटाइम की पोज़िशन की सटीक जानकारी बेहतर होती है, वैसे-वैसे ऐंकर का पोज़ भी उसी हिसाब से अडजस्ट होता है.
जियोस्पेशल ऐंकर के लिए सिस्टम की क्षमता
XrSystemGeospatialAnchorPropertiesANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSystemGeospatialAnchorPropertiesANDROID {
XrStructureType type;
void* next;
uint32_t maxSurfaceAnchorCount;
} XrSystemGeospatialAnchorPropertiesANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.maxSurfaceAnchorCountएकuint32_tहै, जो ज़्यादा से ज़्यादा उतने सर्फ़ेस ऐंकर की संख्या दिखाता है जितने बनाए जा सकते हैं.
xrGetSystemProperties को कॉल करते समय, XrSystemProperties में XrSystemGeospatialAnchorPropertiesANDROID स्ट्रक्चर को जोड़कर, कोई ऐप्लिकेशन सिस्टम की जियोस्पेशल ऐंकर क्षमताओं की जांच कर सकता है.
अगर XrSystemGeospatialPropertiesANDROID :: supportsGeospatial, XR_TRUE है, तो maxSurfaceAnchorCount से पता चलता है कि रनटाइम, ज़्यादा से ज़्यादा कितने सर्फ़ेस ऐंकर के साथ काम करता है. इस मामले में, सीमा 0 से ज़्यादा होनी चाहिए.
अगर XrSystemGeospatialPropertiesANDROID :: supportsGeospatial, XR_TRUE नहीं है, तो maxSurfaceAnchorCount 0 होना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSystemGeospatialAnchorPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SYSTEM_GEOSPATIAL_ANCHOR_PROPERTIES_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
एंकर के लिए प्लेन ट्रैकिंग
XrGeospatialTrackerAnchorTrackingInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGeospatialTrackerAnchorTrackingInfoANDROID {
XrStructureType type;
const void* next;
XrBool32 shouldTrackPlanes;
} XrGeospatialTrackerAnchorTrackingInfoANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.shouldTrackPlanesएकXrBool32है. इससे पता चलता है कि जियोस्पेशल ट्रैकर, प्लेन को ट्रैक करेगा या नहीं. इससे, सतह पर लॉक किए गए ऐंकर की पोज़िशन को बेहतर बनाने में मदद मिलती है.
सरफ़ेस-लॉक किए गए ऐंकर की पोज़िशन को बेहतर बनाने के लिए, प्लेन ट्रैकिंग को चालू किया जा सकता है.
अगर ऐप्लिकेशन को प्लैन ट्रैकिंग की सुविधा चालू करनी है, ताकि प्लैन ऐंकर पोज़ को बेहतर बनाया जा सके, तो वह xrCreateGeospatialTrackerANDROID को कॉल करते समय, XrGeospatialTrackerAnchorTrackingInfoANDROID स्ट्रक्चर को XrGeospatialTrackerCreateInfoANDROID से चेन कर सकता है.
सही इस्तेमाल (इंप्लिसिट)
- XrGeospatialTrackerAnchorTrackingInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
जियोस्पेशल ऐंकर
xrCreateGeospatialAnchorANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateGeospatialAnchorANDROID(
XrSpatialContextEXT spatialContext,
const XrGeospatialAnchorCreateInfoANDROID* createInfo,
XrSpatialEntityIdEXT* anchorEntityId);
पैरामीटर की जानकारी
spatialContext, XrSpatialContextEXT है, जिसमें ऐंकर बनाना है. कॉन्टेक्स्ट कोXR_SPATIAL_CAPABILITY_ANCHOR_EXTके लिए कॉन्फ़िगर किया जाना चाहिए. ऐसा न होने पर, रनटाइम कोXR_ERROR_VALIDATION_FAILUREदिखाना चाहिए.createInfo, XrGeospatialAnchorCreateInfoANDROID का पॉइंटर है. इसमें ऐंकर बनाने के पैरामीटर शामिल होते हैं.anchorEntityId,XrSpatialEntityIdEXTका पॉइंटर है. इसमें ऐंकर इकाई का आईडी दिखता है.
अगर XrGeospatialAnchorCreateInfoANDROID :: geospatialTracker में बताया गया XrGeospatialTrackerANDROID, XR_GEOSPATIAL_TRACKER_STATE_RUNNING_ANDROID स्टेटस में नहीं है, तो रनटाइम को XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID दिखाना चाहिए .
सही इस्तेमाल (इंप्लिसिट)
- xrCreateGeospatialAnchorANDROID को कॉल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createInfoको किसी मान्य XrGeospatialAnchorCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए -
anchorEntityIdकोXrSpatialEntityIdEXTवैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROIDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrGeospatialAnchorCreateInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGeospatialAnchorCreateInfoANDROID {
XrStructureType type;
const void* next;
XrGeospatialTrackerANDROID geospatialTracker;
XrGeospatialPoseANDROID geospatialPose;
} XrGeospatialAnchorCreateInfoANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.geospatialTracker, XrGeospatialTrackerANDROID है. इसका इस्तेमाल ऐंकर बनाने के लिए किया जाता है.geospatialPose, XrGeospatialPoseANDROID का एक पॉइंटर है. इससे ऐंकर की जगह और ओरिएंटेशन के बारे में पता चलता है.
सही इस्तेमाल (इंप्लिसिट)
- XrGeospatialAnchorCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन को चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
geospatialTrackerएक मान्य XrGeospatialTrackerANDROID हैंडल होना चाहिए -
geospatialPoseXrGeospatialPoseANDROID स्ट्रक्चर मान्य होना चाहिए
सरफ़ेस ऐंकर
सरफ़ेस ऐंकर, किसी सतह के हिसाब से लगाए गए ऐंकर होते हैं. जैसे, ज़मीन या छत.
XrSurfaceAnchorTypeANDROID एन्यूमरेशन को इस तरह से तय किया गया है:
typedef enum XrSurfaceAnchorTypeANDROID {
XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID = 1,
XR_SURFACE_ANCHOR_TYPE_ROOFTOP_ANDROID = 2,
XR_SURFACE_ANCHOR_TYPE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSurfaceAnchorTypeANDROID;
XrSurfaceAnchorTypeANDROID एन्यूमरेशन से पता चलता है कि ऐंकर किस तरह की सतह से जुड़ा है.
इन्यूमरेंट की ये वैल्यू होती हैं:
Enum की जानकारी
XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID
ज़मीन के हिसाब से प्लेस किए गए ऐंकर का टाइप.
XR_SURFACE_ANCHOR_TYPE_ROOFTOP_ANDROID
छत या ज़मीन पर मौजूद एंकर का टाइप, जहां कोई इमारत नहीं है.
xrCreateSurfaceAnchorAsyncANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSurfaceAnchorAsyncANDROID(
XrSpatialContextEXT spatialContext,
const XrSurfaceAnchorCreateInfoANDROID* createInfo,
XrFutureEXT* future);
पैरामीटर की जानकारी
spatialContext, XrSpatialContextEXT है, जिसमें ऐंकर बनाना है.createInfo, XrSurfaceAnchorCreateInfoANDROID का पॉइंटर है. इसमें ऐंकर बनाने के पैरामीटर शामिल होते हैं.future,XrFutureEXTका एक पॉइंटर है. इसमें एसिंक्रोनस ऑपरेशन का नतीजा सेव होगा.
xrCreateSurfaceAnchorAsyncANDROID फ़ंक्शन, सरफ़ेस ऐंकर बनाने के लिए एसिंक्रोनस कार्रवाई शुरू करता है. स्टैंडर्ड जियोस्पेशल ऐंकर के उलट, रनटाइम सही ऊंचाई का पता लगाने के लिए, इलाके का डेटा फ़ेच कर सकता है. अगर ऐप्लिकेशन एक बार में XrSystemGeospatialAnchorPropertiesANDROID :: maxSurfaceAnchorCount से ज़्यादा सर्फ़ेस ऐंकर बनाने की कोशिश करता है, तो रनटाइम को XR_ERROR_LIMIT_REACHED दिखाना चाहिए. अगर XrSurfaceAnchorCreateInfoANDROID :: geospatialTracker में बताया गया XrGeospatialTrackerANDROID, XR_GEOSPATIAL_TRACKER_STATE_RUNNING_ANDROID स्थिति में नहीं है, तो रनटाइम को XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID दिखाना चाहिए . अगर दी गई जगह के लिए कोई प्लैटफ़ॉर्म डेटा मौजूद नहीं है, तो हो सकता है कि एसिंक्रोनस तरीके से कार्रवाई पूरी न हो और आपको XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID नतीजा मिले. अगर spatialContext के लिए XR_SPATIAL_CAPABILITY_ANCHOR_EXT को कॉन्फ़िगर नहीं किया गया है, तो रनटाइम को XR_ERROR_VALIDATION_FAILURE दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSurfaceAnchorAsyncANDROID को कॉल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
createInfoको किसी मान्य XrSurfaceAnchorCreateInfoANDROID स्ट्रक्चर का पॉइंटर होना चाहिए -
futureकोXrFutureEXTवैल्यू का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROIDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrSurfaceAnchorCreateInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrSurfaceAnchorCreateInfoANDROID {
XrStructureType type;
const void* next;
XrGeospatialTrackerANDROID geospatialTracker;
XrSurfaceAnchorTypeANDROID surfaceAnchorType;
XrQuaternionf eastUpSouthOrientation;
double latitude;
double longitude;
double altitudeRelativeToSurface;
} XrSurfaceAnchorCreateInfoANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.geospatialTracker, इस्तेमाल करने के लिए XrGeospatialTrackerANDROID है.surfaceAnchorType, ऐंकर के लिए XrSurfaceAnchorTypeANDROID है.eastUpSouthOrientation, कोऑर्डिनेट सिस्टम के हिसाब से ओरिएंटेशन है. इसमें +X=पूर्व, +Y=ऊपर, और +Z=दक्षिण है.latitude, डिग्री में अक्षांश है. यह -89.9 और +89.9 के बीच होना चाहिए.longitude, -180 और +180 के बीच डिग्री में देशांतर है.altitudeRelativeToSurface,surfaceAnchorTypeसे तय की गई सतह के हिसाब से मीटर में ऊंचाई है.
सही इस्तेमाल (इंप्लिसिट)
- XrSurfaceAnchorCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
geospatialTrackerएक मान्य XrGeospatialTrackerANDROID हैंडल होना चाहिए -
surfaceAnchorTypeकी वैल्यू, XrSurfaceAnchorTypeANDROID की मान्य वैल्यू होनी चाहिए -
latitudeकी वैल्यू,doubleकी मान्य वैल्यू होनी चाहिए -
longitudeकी वैल्यू,doubleकी मान्य वैल्यू होनी चाहिए -
altitudeRelativeToSurfaceकी वैल्यू,doubleकी मान्य वैल्यू होनी चाहिए
xrCreateSurfaceAnchorCompleteANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSurfaceAnchorCompleteANDROID(
XrSpatialContextEXT spatialContext,
XrFutureEXT future,
XrSurfaceAnchorCreateCompletionANDROID* completion);
पैरामीटर की जानकारी
spatialContext, XrSpatialContextEXT है, जिसका इस्तेमाल इसे बनाने के लिए किया गया है.future, xrCreateSurfaceAnchorAsyncANDROID से मिलाXrFutureEXTहै.completion, XrSurfaceAnchorCreateCompletionANDROID का पॉइंटर है, जिसे नतीजा मिलता है.
सही इस्तेमाल (इंप्लिसिट)
- xrCreateSurfaceAnchorCompleteANDROID को कॉल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन को चालू करना ज़रूरी है -
spatialContextएक मान्य XrSpatialContextEXT हैंडल होना चाहिए -
completionको XrSurfaceAnchorCreateCompletionANDROID स्ट्रक्चर का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_FUTURE_INVALID_EXTXR_ERROR_FUTURE_PENDING_EXTXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrSurfaceAnchorCreateCompletionANDROID स्ट्रक्चर में, एसिंक्रोनस तरीके से बनाए गए सरफ़ेस ऐंकर का नतीजा होता है.
typedef struct XrSurfaceAnchorCreateCompletionANDROID {
XrStructureType type;
void* next;
XrResult futureResult;
XrSpatialEntityIdEXT anchorEntityId;
} XrSurfaceAnchorCreateCompletionANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.futureResult, स्पेस बनाने की कार्रवाई का XrResult है. अगरfutureResult,XR_ERROR_GEOSPATIAL_CLOUD_AUTH_FAILED_ANDROIDहै, तोnextचेन में मौजूद स्ट्रक्चर से, गड़बड़ी के बारे में ज़्यादा जानकारी मिल सकती है.anchorEntityId, बनाए गए ऐंकर काXrSpatialEntityIdEXTहै. अगरfutureResult,XR_SUCCESSनहीं है, तो XR_NULL_SPATIAL_ENTITY_ID_EXT है.
आने वाले समय में मिलने वाले रिटर्न कोड
futureResult वैल्यू:
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_RUNTIME_FAILUREXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROIDXR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROIDXR_ERROR_GEOSPATIAL_CLOUD_AUTH_FAILED_ANDROID
सही इस्तेमाल (इंप्लिसिट)
- XrSurfaceAnchorCreateCompletionANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
futureResultmust be a valid XrResult value
उदाहरण
टेरेन ऐंकर बनाना
PFN_xrCreateSpatialContextAsyncEXT xrCreateSpatialContextAsyncEXT;
PFN_xrCreateSpatialContextCompleteEXT xrCreateSpatialContextCompleteEXT;
PFN_xrCreateSurfaceAnchorAsyncANDROID xrCreateSurfaceAnchorAsyncANDROID;
PFN_xrPollFutureEXT xrPollFutureEXT;
PFN_xrCreateSurfaceAnchorCompleteANDROID xrCreateSurfaceAnchorCompleteANDROID;
XrInstance instance;
XrSession session;
XrGeospatialTrackerANDROID geospatialTracker;
// Create a spatial context
XrSpatialContextEXT spatialContext{};
{
std::vector<XrSpatialComponentTypeEXT> enabledComponents = {
XR_SPATIAL_COMPONENT_TYPE_ANCHOR_EXT,
};
XrSpatialCapabilityConfigurationAnchorEXT
anchorConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_ANCHOR_EXT};
anchorConfig.capability = XR_SPATIAL_CAPABILITY_ANCHOR_EXT;
anchorConfig.enabledComponentCount = enabledComponents.size();
anchorConfig.enabledComponents = enabledComponents.data();
std::array<XrSpatialCapabilityConfigurationBaseHeaderEXT*, 1> capabilityConfigs = {
reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&anchorConfig),
};
XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();
XrFutureEXT createContextFuture;
CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));
// ... wait until future is ready ...
XrCreateSpatialContextCompletionEXT contextCompletion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &contextCompletion));
if (contextCompletion.futureResult != XR_SUCCESS) {
return;
}
spatialContext = contextCompletion.spatialContext;
}
XrSurfaceAnchorCreateInfoANDROID anchorCreateInfo{
XR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROID};
anchorCreateInfo.surfaceAnchorType = XR_SURFACE_ANCHOR_TYPE_TERRAIN_ANDROID;
anchorCreateInfo.eastUpSouthOrientation = {0, 0, 0, 1};
anchorCreateInfo.latitude = 37.7749;
anchorCreateInfo.longitude = -122.4194;
anchorCreateInfo.altitudeRelativeToSurface = 0;
anchorCreateInfo.geospatialTracker = geospatialTracker;
XrFutureEXT anchorFuture = XR_NULL_FUTURE_EXT;
CHK_XR(xrCreateSurfaceAnchorAsyncANDROID(spatialContext, &anchorCreateInfo, &anchorFuture));
XrFuturePollInfoEXT anchorPollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
XrFuturePollResultEXT anchorPollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
anchorPollInfo.future = anchorFuture;
anchorPollResult.state = XR_FUTURE_STATE_PENDING_EXT;
while (anchorPollResult.state == XR_FUTURE_STATE_PENDING_EXT) {
// Do in render loop/state loop.
CHK_XR(xrPollFutureEXT(instance, &anchorPollInfo, &anchorPollResult));
}
XrSurfaceAnchorCreateCompletionANDROID anchorCompletion{
XR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROID};
CHK_XR(xrCreateSurfaceAnchorCompleteANDROID(spatialContext, anchorFuture, &anchorCompletion));
if (anchorCompletion.futureResult == XR_SUCCESS) {
// Use completion.anchorEntityId.
XrSpatialEntityIdEXT anchorId = anchorCompletion.anchorEntityId;
// Query in UpdateSnapshot.
}
नए निर्देश
- xrCreateGeospatialAnchorANDROID
- xrCreateSurfaceAnchorAsyncANDROID
- xrCreateSurfaceAnchorCompleteANDROID
नए स्ट्रक्चर
- XrGeospatialAnchorCreateInfoANDROID
- XrSurfaceAnchorCreateCompletionANDROID
- XrSurfaceAnchorCreateInfoANDROID
XrGeospatialTrackerCreateInfoANDROID को एक्सटेंड करना :
XrSystemProperties को एक्सटेंड करना :
नए Enum
नए Enum कॉन्सटेंट
XR_ANDROID_GEOSPATIAL_ANCHOR_EXTENSION_NAMEXR_ANDROID_geospatial_anchor_SPEC_VERSIONXrResult को एक्सटेंड करना :
XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID
XrStructureType को एक्सटेंड करना :
XR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROIDXR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROIDXR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROIDXR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_GEOSPATIAL_ANCHOR_PROPERTIES_ANDROID
समस्याएं
वर्शन इतिहास
संशोधन 1, 30-10-2025 (बेन किंग)
- शुरुआती ड्राफ़्ट.