XR_ANDROID_geospatial_anchor

নাম স্ট্রিং

XR_ANDROID_geospatial_anchor

এক্সটেনশন টাইপ

ইনস্ট্যান্স এক্সটেনশন

নিবন্ধিত এক্সটেনশন নম্বর

৭৯৮

সংশোধন

অনুমোদনের অবস্থা

অনুমোদিত নয়

এক্সটেনশন এবং সংস্করণ নির্ভরতা

XR_ANDROID_geospatial
এবং
XR_EXT_future
এবং
XR_EXT_spatial_entity
এবং
XR_EXT_spatial_anchor

সর্বশেষ সংশোধনের তারিখ

২০২৫-১০-৩০

আইপি স্ট্যাটাস

কোনো জ্ঞাত আইপি দাবি নেই।

অবদানকারীরা

জন উলম্যান, গুগল
বেন কিং, গুগল
নিহাব জৈন, গুগল
জ্যারেড ফাইন্ডার, গুগল

সংক্ষিপ্ত বিবরণ

এই এক্সটেনশনটি মূল জিওস্পেশিয়াল এক্সটেনশনের উপর ভিত্তি করে জিওস্পেশিয়াল অ্যাঙ্কর এবং সারফেস অ্যাঙ্কর প্রদান করে। জিওস্পেশিয়াল অ্যাঙ্কর হলো এমন অ্যাঙ্কর যা পৃথিবীর সাপেক্ষে একটি নির্দিষ্ট অক্ষাংশ, দ্রাঘিমাংশ এবং উচ্চতায় মহাকাশে অবস্থিত। সারফেস অ্যাঙ্কর হলো পৃথিবী-সাপেক্ষ অ্যাঙ্কর যা ভিজ্যুয়াল পজিশনিং সার্ভিস দ্বারা জ্ঞাত কোনো পৃষ্ঠের সাপেক্ষে একটি নির্দিষ্ট অক্ষাংশ, দ্রাঘিমাংশ এবং উচ্চতায় স্থাপন করা হয়। পৃথিবীর সাপেক্ষে রানটাইমের অবস্থানের নির্ভুলতা যত উন্নত হয়, অ্যাঙ্করের ভঙ্গিও সেই অনুযায়ী সামঞ্জস্য হয়।

ভূ-স্থানিক অ্যাঙ্করগুলির জন্য সিস্টেমের সক্ষমতা

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 নির্দেশ করে রানটাইম সর্বোচ্চ কতগুলো সারফেস অ্যাঙ্কর সমর্থন করে। এক্ষেত্রে এই সীমা অবশ্যই ০-এর চেয়ে বেশি হতে হবে।

যদি XrSystemGeospatialPropertiesANDROID :: supportsGeospatial XR_TRUE না হয়, তাহলে maxSurfaceAnchorCount অবশ্যই 0 হতে হবে।

বৈধ ব্যবহার (অন্তর্নিহিত)

অ্যাঙ্করের জন্য প্লেন ট্র্যাকিং

XrGeospatialTrackerAnchorTrackingInfoANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrGeospatialTrackerAnchorTrackingInfoANDROID {
    XrStructureType    type;
    const void*        next;
    XrBool32           shouldTrackPlanes;
} XrGeospatialTrackerAnchorTrackingInfoANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।
  • shouldTrackPlanes হলো একটি XrBool32 যা নির্দেশ করে যে, ভূ-স্থানিক ট্র্যাকারটি ভূপৃষ্ঠে-আবদ্ধ অ্যাঙ্করগুলির অবস্থান উন্নত করার জন্য প্লেন ট্র্যাক করবে কি না।

পৃষ্ঠে আবদ্ধ অ্যাঙ্করগুলির অবস্থান নির্ণয় উন্নত করার জন্য প্লেন ট্র্যাকিং সক্রিয় করা যেতে পারে

যদি অ্যাপ্লিকেশনটি সারফেস অ্যাঙ্কর পোজ উন্নত করার জন্য প্লেন ট্র্যাকিং সক্ষম করতে চায়, তবে এটি xrCreateGeospatialTrackerANDROID কল করার সময় XrGeospatialTrackerCreateInfoANDROID-এর সাথে একটি XrGeospatialTrackerAnchorTrackingInfoANDROID স্ট্রাকচার চেইন করতে পারে

বৈধ ব্যবহার (অন্তর্নিহিত)

ভূ-স্থানিক অ্যাঙ্কর

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- এ নির্দিষ্ট করা geospatialTracker 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_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROID
  • XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_VALIDATION_FAILURE

XrGeospatialAnchorCreateInfoANDROID কাঠামোটি নিম্নরূপে সংজ্ঞায়িত করা হয়:

typedef struct XrGeospatialAnchorCreateInfoANDROID {
    XrStructureType               type;
    const void*                   next;
    XrGeospatialTrackerANDROID    geospatialTracker;
    XrGeospatialPoseANDROID       geospatialPose;
} XrGeospatialAnchorCreateInfoANDROID;

সদস্যদের বিবরণ

  • type হলো এই স্ট্রাকচারটির XrStructureType
  • next হলো NULL অথবা একটি স্ট্রাকচার চেইনের পরবর্তী স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার।
  • অ্যাঙ্কর তৈরি করার জন্য ব্যবহৃত XrGeospatialTrackerANDROID হলো geospatialTracker
  • 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 এনুমারেশনটি নির্দিষ্ট করে যে একটি অ্যাঙ্কর কোন ধরনের সারফেসের সাপেক্ষে অবস্থিত।

গণনাকারীগুলোর নিম্নলিখিত মান রয়েছে:

এনামের বিবরণ

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- এ নির্দিষ্ট করা 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_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_GEOSPATIAL_COORDINATES_INVALID_ANDROID
  • XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_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 হলো ডিগ্রিতে পরিমাপকৃত একটি মান, যা -৮৯.৯ থেকে +৮৯.৯ এর মধ্যে অবস্থিত।
  • longitude হলো ডিগ্রিতে পরিমাপকৃত একটি মান, যা -১৮০ থেকে +১৮০ এর মধ্যে থাকে।
  • 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);

প্যারামিটার বিবরণ

বৈধ ব্যবহার (অন্তর্নিহিত)

  • xrCreateSurfaceAnchorCompleteANDROID কল করার আগে XR_ANDROID_geospatial_anchor এক্সটেনশনটি অবশ্যই সক্রিয় করতে হবে।
  • spatialContext অবশ্যই একটি বৈধ XrSpatialContextEXT হ্যান্ডেল হতে হবে।
  • completion অবশ্যই একটি XrSurfaceAnchorCreateCompletionANDROID স্ট্রাকচারের দিকে নির্দেশকারী একটি পয়েন্টার হতে হবে।

রিটার্ন কোড

সাফল্য

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_FUTURE_INVALID_EXT
  • XR_ERROR_FUTURE_PENDING_EXT
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_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_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_GEOSPATIAL_TRACKER_NOT_RUNNING_ANDROID
  • XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID
  • XR_ERROR_GEOSPATIAL_CLOUD_AUTH_FAILED_ANDROID

বৈধ ব্যবহার (অন্তর্নিহিত)

উদাহরণ

ভূখণ্ড অ্যাঙ্কর তৈরি করুন

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.
}

নতুন কমান্ড

নতুন কাঠামো

নতুন এনাম

নতুন এনাম ধ্রুবক

  • XR_ANDROID_GEOSPATIAL_ANCHOR_EXTENSION_NAME
  • XR_ANDROID_geospatial_anchor_SPEC_VERSION
  • XrResult- এর সম্প্রসারণ:

    • XR_ERROR_SURFACE_ANCHOR_LOCATION_UNSUPPORTED_ANDROID
  • XrStructureType সম্প্রসারণ :

    • XR_TYPE_GEOSPATIAL_ANCHOR_CREATE_INFO_ANDROID
    • XR_TYPE_GEOSPATIAL_TRACKER_ANCHOR_TRACKING_INFO_ANDROID
    • XR_TYPE_SURFACE_ANCHOR_CREATE_COMPLETION_ANDROID
    • XR_TYPE_SURFACE_ANCHOR_CREATE_INFO_ANDROID
    • XR_TYPE_SYSTEM_GEOSPATIAL_ANCHOR_PROPERTIES_ANDROID

সমস্যা

সংস্করণ ইতিহাস

  • সংস্করণ ১, ২০২৫-১০-৩০ (বেন কিং)

    • প্রাথমিক খসড়া।