XR_ANDROID_geospatial_anchor
नाम वाली स्ट्रिंग
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 को कॉल करते समय, XrSystemGeospatialAnchorPropertiesANDROID स्ट्रक्चर को XrSystemProperties से जोड़कर, कोई ऐप्लिकेशन सिस्टम की जियोस्पेशियल ऐंकर क्षमताओं की जांच कर सकता है.
अगर 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 -
next,NULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
ऐंकर के लिए प्लेन ट्रैकिंग
XrGeospatialTrackerAnchorTrackingInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:
typedef struct XrGeospatialTrackerAnchorTrackingInfoANDROID {
XrStructureType type;
const void* next;
XrBool32 shouldTrackPlanes;
} XrGeospatialTrackerAnchorTrackingInfoANDROID;
सदस्यों की जानकारी
type, इस स्ट्रक्चर का XrStructureType है.next,NULLहै या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है.shouldTrackPlanes,XrBool32है. इससे पता चलता है कि जियोस्पेशियल ट्रैकर, सर्फ़ेस-लॉक किए गए ऐंकर की पोज़िशनिंग को बेहतर बनाने के लिए, प्लेन को ट्रैक करेगा या नहीं.
सर्फ़ेस-लॉक किए गए ऐंकर की पोज़िशनिंग को बेहतर बनाने के लिए, प्लेन ट्रैकिंग की सुविधा चालू की जा सकती है.
अगर ऐप्लिकेशन, सर्फ़ेस ऐंकर की पोज़िशन को बेहतर बनाने के लिए, प्लेन ट्रैकिंग की सुविधा चालू करना चाहता है, तो xrCreateGeospatialTrackerANDROID को कॉल करते समय, XrGeospatialTrackerAnchorTrackingInfoANDROID स्ट्रक्चर को XrGeospatialTrackerCreateInfoANDROID से जोड़ा जा सकता है.
मान्य इस्तेमाल (सीधे तौर पर न दिखाना)
-
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू होना चाहिए, इससे पहले कि आप XrGeospatialTrackerAnchorTrackingInfoANDROID का इस्तेमाल करें -
typeहोना चाहिएXR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROID -
next,NULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
जियोस्पेशियल ऐंकर
xrCreateGeospatialAnchorANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateGeospatialAnchorANDROID(
XrSpatialContextEXT spatialContext,
const XrGeospatialAnchorCreateInfoANDROID* createInfo,
XrSpatialEntityIdEXT* anchorEntityId);
पैरामीटर की जानकारी
spatialContextवह XrSpatialContextEXT है जिसमें ऐंकर बनाना है. कॉन्टेक्स्ट कोXR_SPATIAL_CAPABILITY_ANCHOR_EXTके लिए कॉन्फ़िगर किया गया होना चाहिए. ऐसा न होने पर, रनटाइम कोXR_ERROR_VALIDATION_FAILUREदिखाना होगा.createInfoXrGeospatialAnchorCreateInfoANDROID का पॉइंटर है. इसमें, ऐंकर बनाने के पैरामीटर शामिल होते हैं.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_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 है जिसका इस्तेमाल ऐंकर बनाने के लिए किया जाता है.geospatialPoseXrGeospatialPoseANDROID का पॉइंटर है. इससे, ऐंकर की जगह और ओरिएंटेशन तय होता है.
मान्य इस्तेमाल (सीधे तौर पर न दिखाना)
- XrGeospatialAnchorCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू होना चाहिए -
type**होना चाहिए**XR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROID -
next,NULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
geospatialTrackerमान्य XrGeospatialTrackerANDROID हैंडल होना चाहिए -
geospatialPoseमान्य XrGeospatialPoseANDROID स्ट्रक्चर होना चाहिए
सर्फ़ेस ऐंकर
सर्फ़ेस ऐंकर, किसी सर्फ़ेस के हिसाब से लगाए गए ऐंकर होते हैं. जैसे, ज़मीन या छतें.
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 है जिसमें ऐंकर बनाना है.createInfoXrSurfaceAnchorCreateInfoANDROID का पॉइंटर है. इसमें, ऐंकर बनाने के पैरामीटर शामिल होते हैं.future,XrFutureEXTका पॉइंटर है. इसमें, एसिंक्रोनस ऑपरेशन का नतीजा सेव किया जाएगा.
The xrCreateSurfaceAnchorAsyncANDROID फ़ंक्शन, सर्फ़ेस ऐंकर बनाने के लिए एसिंक्रोनस ऑपरेशन शुरू करता है. सामान्य जियोस्पेशियल ऐंकर के उलट, रनटाइम, सही ऊंचाई तय करने के लिए, ज़मीन का डेटा फ़ेच कर सकता है. अगर ऐप्लिकेशन, एक बार में XrSystemGeospatialAnchorPropertiesANDROID :: maxSurfaceAnchorCount से ज़्यादा सर्फ़ेस ऐंकर बनाने की कोशिश करता है, तो रनटाइम को XR_ERROR_LIMIT_REACHED दिखाना होगा. अगर XrGeospatialTrackerANDROID , XrSurfaceAnchorCreateInfoANDROID :: geospatialTracker में तय किया गया है, 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_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=East, +Y=Up, और +Z=South है.latitude, डिग्री में अक्षांश है. इसकी वैल्यू -89.9 और +89.9 के बीच होनी चाहिए.longitude, डिग्री में देशांतर है. इसकी वैल्यू -180 और +180 के बीच होनी चाहिए.altitudeRelativeToSurface, मीटर में ऊंचाई है. यहsurfaceAnchorTypeमें तय की गई सर्फ़ेस के हिसाब से होती है.
मान्य इस्तेमाल (सीधे तौर पर न दिखाना)
- XrSurfaceAnchorCreateInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_geospatial_anchorएक्सटेंशन चालू होना चाहिए -
type**होना चाहिए**XR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROID -
next,NULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
geospatialTrackerमान्य XrGeospatialTrackerANDROID हैंडल होना चाहिए -
surfaceAnchorType, मान्य XrSurfaceAnchorTypeANDROID वैल्यू होनी चाहिए -
latitudeमान्यdoubleवैल्यू **होनी चाहिए** -
longitudeहोनी चाहिए मान्यdoubleवैल्यू -
altitudeRelativeToSurface, मान्यdoubleवैल्यू होनी चाहिए
xrCreateSurfaceAnchorCompleteANDROID फ़ंक्शन को इस तरह से तय किया गया है:
XrResult xrCreateSurfaceAnchorCompleteANDROID(
XrSpatialContextEXT spatialContext,
XrFutureEXT future,
XrSurfaceAnchorCreateCompletionANDROID* completion);
पैरामीटर की जानकारी
spatialContextवह XrSpatialContextEXT है जिसका इस्तेमाल बनाने के लिए किया गया है.futureवहXrFutureEXTहै जो xrCreateSurfaceAnchorAsyncANDROID से मिला है .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 -
next,NULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए -
futureResultमान्य XrResult वैल्यू होनी चाहिए
उदाहरण
ज़मीन का ऐंकर बनाना
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 को बढ़ाना :
नए Enums
नए 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
समस्याएं
वर्शन इतिहास
पहला संशोधन, 30-10-2025 (बेन किंग)
- शुरुआती ड्राफ़्ट.