XR_ANDROID_device_anchor_persistence OpenXR এক্সটেনশন

নাম স্ট্রিং

XR_ANDROID_device_anchor_persistence

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

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

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

458

রিভিশন

1

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

XR_EXT_uuid এবং XR_ANDROID_trackables

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

2024-10-10

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

কোন পরিচিত আইপি দাবি.

অবদানকারী

নিহাভ জৈন, গুগল

লেভানা চেন, গুগল

স্পেন্সার কুইন, গুগল

কেনি ভার্কেমার, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশানটিকে বর্তমান ব্যবহারকারীর জন্য বর্তমান ডিভাইসে অ্যাপ্লিকেশন এবং ডিভাইস সেশন জুড়ে টিকে থাকতে, পুনরুদ্ধার করতে এবং অবিরত অ্যাঙ্করগুলিকে মঞ্জুরি দেয়৷

সিস্টেমের ক্ষমতা পরিদর্শন করুন

XrSystemDeviceAnchorPersistencePropertiesANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • supportsAnchorPersistence হল একটি XrBool32 যা নির্দেশ করে যে বর্তমান সিস্টেম স্থানিক অ্যাঙ্করগুলির জন্য অ্যাঙ্কর পারসিস্টেন্স সমর্থন করে কিনা।

একটি অ্যাপ্লিকেশন xrGetSystemProperties কল করার সময় XrSystemDeviceAnchorPersistencePropertiesANDROID কাঠামোর সাথে XrSystemProperties প্রসারিত করে স্থানিক অ্যাঙ্কর ( xrCreateAnchorSpaceANDROID দেখুন) টিকে থাকতে সক্ষম কিনা তা পরীক্ষা করতে পারে । সমর্থিত ট্র্যাকযোগ্য অ্যাঙ্করগুলির জন্য, সমর্থিত প্রকারগুলি জিজ্ঞাসা করতে একটি অ্যাপ্লিকেশন xrEnumerateSupportedPersistenceAnchorTypesANDROID ব্যবহার করতে পারে

যদি XR_FALSE supportsAnchorPersistence এর জন্য ফেরত দেওয়া হয়, তাহলে XR_ERROR_FEATURE_UNSUPPORTED ডিভাইস অ্যাঙ্কর পারসিস্টেন্স ফাংশন থেকে ফেরত দেওয়া হবে যা একটি স্থানিক অ্যাঙ্করে কাজ করে।

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

xrEnumerateSupportedPersistenceAnchorTypesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    trackableTypeCapacityInput,
    uint32_t*                                   trackableTypeCountOutput,
    XrTrackableTypeANDROID*                     trackableTypes);

পরামিতি বিবরণ

  • session হল XrSession যা XrDeviceAnchorPersistenceANDROID তৈরি করে।
  • trackableTypeCapacityInput হল trackableTypes এর ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধার করার জন্য 0।
  • trackableTypeCountOutput হল অ্যারের গণনার একটি পয়েন্টার, অথবা trackableTypeCapacityInput অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
  • trackableTypes হল XrTrackableTypeANDROID- এর একটি অ্যারের একটি পয়েন্টার, কিন্তু trackableTypeCapacityInput 0 হলে NULL হতে পারে
  • প্রয়োজনীয় trackableTypes আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

অ্যাপ্লিকেশনটি অন্যান্য XrTrackableTypeANDROID ট্র্যাকেবলে অ্যাঙ্কর অধ্যবসায়ের সমর্থন পরীক্ষা করতে xrEnumerateSupportedPersistenceAnchorTypesANDROID ব্যবহার করতে পারে

যদি প্রদত্ত XrTrackableTypeANDROID trackableTypes অ্যারেতে ফেরত না দেওয়া হয়, তাহলে XR_ERROR_FEATURE_UNSUPPORTED ডিভাইস অ্যাঙ্কর পারসিসটেন্স ফাংশন থেকে ফেরত দেওয়া হবে যা সেই ধরনের অ্যাঙ্করে কাজ করে।

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

  • XR_ANDROID_device_anchor_persistence এক্সটেনশনটি অবশ্যই xrEnumerateSupportedPersistenceAnchorTypesANDROID কল করার আগে সক্রিয় করতে হবে
  • instance অবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে
  • trackableTypeCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি trackableTypeCapacityInput 0, trackableTypes অবশ্যই trackableTypeCapacityInput XrTrackableTypeANDROID মানগুলির একটি অ্যারের নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_FUNCTION_UNSUPPORTED

একটি ডিভাইস অ্যাঙ্কর পারসিসটেন্স হ্যান্ডেল তৈরি করুন

একটি XrDeviceAnchorPersistenceANDROID হল একটি হ্যান্ডেল যা টিকে থাকার জন্য প্রয়োজনীয় সংস্থানগুলিকে উপস্থাপন করে এবং স্থির অ্যাঙ্করগুলির ট্র্যাক রাখে৷

XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)

xrCreateDeviceAnchorPersistenceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreateDeviceAnchorPersistenceANDROID(
    XrSession                                   session,
    const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
    XrDeviceAnchorPersistenceANDROID*           outHandle);

পরামিতি বিবরণ

একটি অ্যাপ্লিকেশন xrCreateDeviceAnchorPersistenceANDROID কল করে একটি XrDeviceAnchorPersistenceANDROID হ্যান্ডেল তৈরি করতে পারেXrDeviceAnchorPersistenceANDROID পরবর্তী API কলগুলিতে অ্যাঙ্করগুলিকে স্থির বা অবিরত রাখতে ব্যবহার করা যেতে পারেXrDeviceAnchorPersistenceANDROID হ্যান্ডেলটি অবশেষে xrDestroyDeviceAnchorPersistenceANDROID ফাংশন ব্যবহার করে মুক্ত করতে হবে

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

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

XrDeviceAnchorPersistenceCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrDeviceAnchorPersistenceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrDeviceAnchorPersistenceCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।

XrDeviceAnchorPersistenceCreateInfoANDROID কাঠামো XrCreateDeviceAnchorPersistenceANDROID- এ পাস করা হলে XrDeviceAnchorPersistenceANDROID- এর জন্য তৈরির বিকল্প সরবরাহ করে।

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

xrDestroyDeviceAnchorPersistenceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrDestroyDeviceAnchorPersistenceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle);

পরামিতি বিবরণ

  • handle হল একটি XrDeviceAnchorPersistenceANDROID হ্যান্ডেল যা পূর্বে xrCreateDeviceAnchorPersistenceANDROID দ্বারা তৈরি করা হয়েছিল।

xrDestroyDeviceAnchorPersistenceANDROID ফাংশন ডিভাইস অ্যাঙ্কর পারসিস্টেন্স হ্যান্ডেলকে ধ্বংস করে।

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

থ্রেড নিরাপত্তা

  • handle অ্যাক্সেস এবং যেকোনো শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

একটি নোঙ্গর অব্যাহত

xrPersistAnchorANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrPersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceInfoANDROID*    persistedInfo,
    XrUuidEXT*                                  anchorIdOutput);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • persistedInfo হল XrPersistedAnchorSpaceInfoANDROID যেটিতে অ্যাঙ্কর পারসিস্টেন্সের প্যারামিটার রয়েছে।
  • anchorIdOutput হল একটি XrUuidEXT- এর একটি পয়েন্টার যেখানে স্থায়ী অ্যাঙ্করের UUID ফেরত দেওয়া হয়।

অ্যাপ্লিকেশনটি xrPersistAnchorANDROID-কে কল করে অ্যাঙ্করগুলিকে স্থির থাকার অনুরোধ করতে পারে ৷ অ্যাঙ্কর অবিলম্বে স্থির থাকার মানে হল অ্যাপ্লিকেশানটি একটি সফল রিটার্ন মান অনুমান করা উচিত নয়। রিটার্ন করা অ্যাঙ্কর XrUuidEXT ব্যবহার করে অ্যাঙ্করের স্থায়ী অবস্থা পরীক্ষা করতে অ্যাপ্লিকেশনটির xrGetAnchorPersistStateANDROID ব্যবহার করা উচিত । অ্যাঙ্করটি অবিরত করতে অ্যাপ্লিকেশনটি xrUnpersistAnchorANDROID ব্যবহার করতে পারে

  • কলের সময় অ্যাঙ্কর ট্র্যাক করা না হলে XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID ফেরত দেওয়া হবে৷
  • স্থিরতার জন্য অ্যাঙ্কর সারিবদ্ধ হয়ে গেলে XR_SUCCESS ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

XrPersistedAnchorSpaceInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrPersistedAnchorSpaceInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrSpace            anchor;
} XrPersistedAnchorSpaceInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • anchor হল একটি অ্যাঙ্কর XrSpace পূর্বে xrCreateAnchorSpaceANDROID দ্বারা টিকে থাকার জন্য তৈরি করা হয়েছিল।

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

xrGetAnchorPersistStateANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetAnchorPersistStateANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId,
    XrAnchorPersistStateANDROID*                persistState);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • anchorId হল অ্যাঙ্করের XrUuidEXT
  • persistState হল একটি XrAnchorPersistStateANDROID এর একটি পয়েন্টার যেখানে অ্যাঙ্করের অবস্থা ফেরত দেওয়া হয়।
  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।
  • anchorId -এর স্থায়ী ডেটা প্রস্তুত না হলে XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID

XrAnchorPersistStateANDROID enum কে সংজ্ঞায়িত করা হয়েছে:

typedef enum XrAnchorPersistStateANDROID {
    XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
    XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
    XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;

এনাম

বর্ণনা

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

অ্যাঙ্করকে অ্যাপের মাধ্যমে স্থির থাকার জন্য অনুরোধ করা হয়নি।

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

অ্যাঙ্করকে স্থির থাকার জন্য অনুরোধ করা হয়েছে কিন্তু এখনও ধরে রাখা হয়নি।

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

অ্যাঙ্কর সফলভাবে রানটাইম দ্বারা স্থির করা হয়েছে.

স্থায়ী ডেটা থেকে একটি অ্যাঙ্কর তৈরি করুন

xrCreatePersistedAnchorSpaceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreatePersistedAnchorSpaceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
    XrSpace*                                    anchorOutput);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • createInfo হল XrPersistedAnchorSpaceCreateInfoANDROID যাতে অ্যাঙ্কর তৈরির পরামিতি থাকে।
  • anchorOutput হল একটি XrSpace- এর একটি পয়েন্টার যেখানে নতুন অ্যাঙ্কর স্পেস ফেরত দেওয়া হয়।

অ্যাপ্লিকেশানটি একই XrUuidEXT-এর সাথে xrCreatePersistedAnchorSpaceANDROID- এ কল করে পূর্বে স্থায়ী অ্যাঙ্কর থেকে একটি XrSpace অ্যাঙ্কর তৈরি করতে পারে । এটি XR_ANDROID_trackables এ সংজ্ঞায়িত অ্যাঙ্কর তৈরির আরেকটি উপায়।

  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

XrPersistedAnchorSpaceCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrPersistedAnchorSpaceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrUuidEXT          anchorId;
} XrPersistedAnchorSpaceCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • anchorId হল স্থায়ী অ্যাঙ্করের XrUuidEXT থেকে একটি অ্যাঙ্কর XrSpace তৈরি করতে।

XrPersistedAnchorSpaceCreateInfoANDROID কাঠামো xrCreateDeviceAnchorPersistenceANDROID- এ পাস করা হলে অ্যাঙ্করের জন্য তৈরির বিকল্প সরবরাহ করে।

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

স্থায়ী অ্যাঙ্কর গণনা করুন

xrEnumeratePersistedAnchorsANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrEnumeratePersistedAnchorsANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    uint32_t                                    anchorIdsCapacityInput,
    uint32_t*                                   anchorIdsCountOutput,
    XrUuidEXT*                                  anchorIds);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • anchorIdsCapacityInput হল anchorIds অ্যারের ক্ষমতা, বা 0 প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের অনুরোধ নির্দেশ করার জন্য।
  • anchorIdsCountOutput হল anchorIds লেখা গণনার একটি পয়েন্টার, অথবা anchorIdsCapacityInput ইনপুট অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
  • anchorIds হল XrUuidEXT কাঠামোর একটি অ্যারের একটি পয়েন্টার। anchorIdsCapacityInput 0 হলে এটি NULL হতে পারে
  • প্রয়োজনীয় anchorIds আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

অ্যাপ্লিকেশনটি xrEnumeratePersistedAnchorsANDROID-কে কল করে সমস্ত বর্তমান স্থায়ী অ্যাঙ্করগুলি গণনা করতে পারেanchorIds অ্যারের ক্ষমতা পর্যন্ত স্থায়ী অ্যাঙ্করগুলির UUID ধরে রাখবে। যদি ক্ষমতা অপর্যাপ্ত হয়, অ্যাপ্লিকেশনগুলির কোন গ্যারান্টি নেই যে অ্যাঙ্করগুলি ফেরত দেওয়া হবে।

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

  • XR_ANDROID_device_anchor_persistence এক্সটেনশনটি অবশ্যই xrEnumeratePersistedAnchorsANDROID কল করার আগে সক্রিয় করতে হবে
  • handle অবশ্যই একটি বৈধ XrDeviceAnchorPersistenceANDROID হ্যান্ডেল হতে হবে
  • anchorIdsCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি anchorIdsCapacityInput 0, anchorIds অবশ্যই anchorIdsCapacityInput XrUuidEXT কাঠামোর একটি অ্যারের জন্য একটি নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT

একটি অবিরাম নোঙ্গর unpersist

xrUnpersistAnchorANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrUnpersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId);

পরামিতি বিবরণ

অ্যাপ্লিকেশনটি xrUnpersistAnchorANDROID কল করে একটি স্থায়ী নোঙ্গরকে স্থগিত করতে পারে না এবং অবিরত থাকার জন্য অ্যাঙ্করের অ্যাঙ্কর XrUuidEXT পাস করে।

  • স্থায়ী ডেটা প্রস্তুত না হলে XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID ফেরত দেওয়া হবে৷
  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

নোঙ্গর অধ্যবসায় জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোডটি প্রদর্শন করে যে কীভাবে সিস্টেমের সক্ষমতা পরিদর্শন করা যায়, স্থির, গণনা করা এবং নোঙ্গরগুলিকে অবিরত করা যায়, সেইসাথে স্থায়ী অ্যাঙ্কর XrUuidEXT থেকে একটি অ্যাঙ্কর তৈরি করা যায়।

XrSession session; // previously initialized
XrSpace anchor; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized

// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;

XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));

/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;

XrUuidEXT anchorId;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));

// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID)  {
  // The anchor was persisted successfully
}

// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;

CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);

// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  allAnchors.data()
));

// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];

XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;

XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
  persistenceHandle,
  &createInfo,
  &anchorSpace
));

// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;

// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));

নতুন অবজেক্টের ধরন

নতুন Enum ধ্রুবক

XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_OBJECT_TYPE_DEVICE_ANCHOR_PERSISTENCE_ANDROID

XrResult গণনা এর সাথে বর্ধিত করা হয়েছে:

  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_ANCHOR_ALREADY_PERSISTED_ANDROID
  • XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TYPE_PERSISTED_ANCHOR_ANDROID
  • XR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROID
  • XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID
  • XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

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

  • রিভিশন 1, 2024-10-10 (কেনি ভার্কেমার)
    • প্রাথমিক এক্সটেনশন বর্ণনা
,

নাম স্ট্রিং

XR_ANDROID_device_anchor_persistence

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

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

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

458

রিভিশন

1

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

XR_EXT_uuid এবং XR_ANDROID_trackables

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

2024-10-10

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

কোন পরিচিত আইপি দাবি.

অবদানকারী

নিহাভ জৈন, গুগল

লেভানা চেন, গুগল

স্পেন্সার কুইন, গুগল

কেনি ভার্কেমার, গুগল

ওভারভিউ

এই এক্সটেনশনটি অ্যাপ্লিকেশানটিকে বর্তমান ব্যবহারকারীর জন্য বর্তমান ডিভাইসে অ্যাপ্লিকেশন এবং ডিভাইস সেশন জুড়ে টিকে থাকতে, পুনরুদ্ধার করতে এবং অবিরত অ্যাঙ্করগুলিকে মঞ্জুরি দেয়৷

সিস্টেমের ক্ষমতা পরিদর্শন করুন

XrSystemDeviceAnchorPersistencePropertiesANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSystemDeviceAnchorPersistencePropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsAnchorPersistence;
} XrSystemDeviceAnchorPersistencePropertiesANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • supportsAnchorPersistence হল একটি XrBool32 যা নির্দেশ করে যে বর্তমান সিস্টেম স্থানিক অ্যাঙ্করগুলির জন্য অ্যাঙ্কর পারসিস্টেন্স সমর্থন করে কিনা।

একটি অ্যাপ্লিকেশন xrGetSystemProperties কল করার সময় XrSystemDeviceAnchorPersistencePropertiesANDROID কাঠামোর সাথে XrSystemProperties প্রসারিত করে স্থানিক অ্যাঙ্কর ( xrCreateAnchorSpaceANDROID দেখুন) টিকে থাকতে সক্ষম কিনা তা পরীক্ষা করতে পারে । সমর্থিত ট্র্যাকযোগ্য অ্যাঙ্করগুলির জন্য, সমর্থিত প্রকারগুলি জিজ্ঞাসা করতে একটি অ্যাপ্লিকেশন xrEnumerateSupportedPersistenceAnchorTypesANDROID ব্যবহার করতে পারে

যদি XR_FALSE supportsAnchorPersistence এর জন্য ফেরত দেওয়া হয়, তাহলে XR_ERROR_FEATURE_UNSUPPORTED ডিভাইস অ্যাঙ্কর পারসিস্টেন্স ফাংশন থেকে ফেরত দেওয়া হবে যা একটি স্থানিক অ্যাঙ্করে কাজ করে।

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

xrEnumerateSupportedPersistenceAnchorTypesANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrEnumerateSupportedPersistenceAnchorTypesANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    trackableTypeCapacityInput,
    uint32_t*                                   trackableTypeCountOutput,
    XrTrackableTypeANDROID*                     trackableTypes);

পরামিতি বিবরণ

  • session হল XrSession যা XrDeviceAnchorPersistenceANDROID তৈরি করে।
  • trackableTypeCapacityInput হল trackableTypes এর ক্ষমতা, বা প্রয়োজনীয় ক্ষমতা পুনরুদ্ধার করার জন্য 0।
  • trackableTypeCountOutput হল অ্যারের গণনার একটি পয়েন্টার, অথবা trackableTypeCapacityInput অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
  • trackableTypes হল XrTrackableTypeANDROID- এর একটি অ্যারের একটি পয়েন্টার, কিন্তু trackableTypeCapacityInput 0 হলে NULL হতে পারে
  • প্রয়োজনীয় trackableTypes আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

অ্যাপ্লিকেশনটি অন্যান্য XrTrackableTypeANDROID ট্র্যাকেবলে অ্যাঙ্কর অধ্যবসায়ের সমর্থন পরীক্ষা করতে xrEnumerateSupportedPersistenceAnchorTypesANDROID ব্যবহার করতে পারে

যদি প্রদত্ত XrTrackableTypeANDROID trackableTypes অ্যারেতে ফেরত না দেওয়া হয়, তাহলে XR_ERROR_FEATURE_UNSUPPORTED ডিভাইস অ্যাঙ্কর পারসিসটেন্স ফাংশন থেকে ফেরত দেওয়া হবে যা সেই ধরনের অ্যাঙ্করে কাজ করে।

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

  • XR_ANDROID_device_anchor_persistence এক্সটেনশনটি অবশ্যই xrEnumerateSupportedPersistenceAnchorTypesANDROID কল করার আগে সক্রিয় করতে হবে
  • instance অবশ্যই একটি বৈধ XrInstance হ্যান্ডেল হতে হবে
  • trackableTypeCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি trackableTypeCapacityInput 0, trackableTypes অবশ্যই trackableTypeCapacityInput XrTrackableTypeANDROID মানগুলির একটি অ্যারের নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_SYSTEM_INVALID
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_FUNCTION_UNSUPPORTED

একটি ডিভাইস অ্যাঙ্কর পারসিসটেন্স হ্যান্ডেল তৈরি করুন

একটি XrDeviceAnchorPersistenceANDROID হল একটি হ্যান্ডেল যা টিকে থাকার জন্য প্রয়োজনীয় সংস্থানগুলিকে উপস্থাপন করে এবং স্থির অ্যাঙ্করগুলির ট্র্যাক রাখে৷

XR_DEFINE_HANDLE(XrDeviceAnchorPersistenceANDROID)

xrCreateDeviceAnchorPersistenceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreateDeviceAnchorPersistenceANDROID(
    XrSession                                   session,
    const XrDeviceAnchorPersistenceCreateInfoANDROID* createInfo,
    XrDeviceAnchorPersistenceANDROID*           outHandle);

পরামিতি বিবরণ

একটি অ্যাপ্লিকেশন xrCreateDeviceAnchorPersistenceANDROID কল করে একটি XrDeviceAnchorPersistenceANDROID হ্যান্ডেল তৈরি করতে পারেXrDeviceAnchorPersistenceANDROID পরবর্তী API কলগুলিতে অ্যাঙ্করগুলিকে স্থির বা অবিরত রাখতে ব্যবহার করা যেতে পারেXrDeviceAnchorPersistenceANDROID হ্যান্ডেলটি অবশেষে xrDestroyDeviceAnchorPersistenceANDROID ফাংশন ব্যবহার করে মুক্ত করতে হবে

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

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

XrDeviceAnchorPersistenceCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrDeviceAnchorPersistenceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
} XrDeviceAnchorPersistenceCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।

XrDeviceAnchorPersistenceCreateInfoANDROID কাঠামো XrCreateDeviceAnchorPersistenceANDROID- এ পাস করা হলে XrDeviceAnchorPersistenceANDROID- এর জন্য তৈরির বিকল্প সরবরাহ করে।

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

xrDestroyDeviceAnchorPersistenceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrDestroyDeviceAnchorPersistenceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle);

পরামিতি বিবরণ

  • handle হল একটি XrDeviceAnchorPersistenceANDROID হ্যান্ডেল যা পূর্বে xrCreateDeviceAnchorPersistenceANDROID দ্বারা তৈরি করা হয়েছিল।

xrDestroyDeviceAnchorPersistenceANDROID ফাংশন ডিভাইস অ্যাঙ্কর পারসিস্টেন্স হ্যান্ডেলকে ধ্বংস করে।

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

থ্রেড নিরাপত্তা

  • handle অ্যাক্সেস এবং যেকোনো শিশু হ্যান্ডেলগুলিকে বাহ্যিকভাবে সিঙ্ক্রোনাইজ করতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID

একটি নোঙ্গর অব্যাহত

xrPersistAnchorANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrPersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceInfoANDROID*    persistedInfo,
    XrUuidEXT*                                  anchorIdOutput);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • persistedInfo হল XrPersistedAnchorSpaceInfoANDROID যেটিতে অ্যাঙ্কর পারসিস্টেন্সের প্যারামিটার রয়েছে।
  • anchorIdOutput হল একটি XrUuidEXT- এর একটি পয়েন্টার যেখানে স্থায়ী অ্যাঙ্করের UUID ফেরত দেওয়া হয়।

অ্যাপ্লিকেশনটি xrPersistAnchorANDROID-কে কল করে অ্যাঙ্করগুলিকে স্থির থাকার অনুরোধ করতে পারে ৷ অ্যাঙ্কর অবিলম্বে স্থির থাকার মানে হল অ্যাপ্লিকেশানটি একটি সফল রিটার্ন মান অনুমান করা উচিত নয়। রিটার্ন করা অ্যাঙ্কর XrUuidEXT ব্যবহার করে অ্যাঙ্করের স্থায়ী অবস্থা পরীক্ষা করতে অ্যাপ্লিকেশনটির xrGetAnchorPersistStateANDROID ব্যবহার করা উচিত । অ্যাঙ্করটি অবিরত করতে অ্যাপ্লিকেশনটি xrUnpersistAnchorANDROID ব্যবহার করতে পারে

  • কলের সময় অ্যাঙ্কর ট্র্যাক করা না হলে XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID ফেরত দেওয়া হবে৷
  • স্থিরতার জন্য অ্যাঙ্কর সারিবদ্ধ হয়ে গেলে XR_SUCCESS ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED

XrPersistedAnchorSpaceInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrPersistedAnchorSpaceInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrSpace            anchor;
} XrPersistedAnchorSpaceInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • anchor হল একটি অ্যাঙ্কর XrSpace পূর্বে xrCreateAnchorSpaceANDROID দ্বারা টিকে থাকার জন্য তৈরি করা হয়েছিল।

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

xrGetAnchorPersistStateANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrGetAnchorPersistStateANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId,
    XrAnchorPersistStateANDROID*                persistState);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • anchorId হল অ্যাঙ্করের XrUuidEXT
  • persistState হল একটি XrAnchorPersistStateANDROID এর একটি পয়েন্টার যেখানে অ্যাঙ্করের অবস্থা ফেরত দেওয়া হয়।
  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।
  • anchorId -এর স্থায়ী ডেটা প্রস্তুত না হলে XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID

XrAnchorPersistStateANDROID enum কে সংজ্ঞায়িত করা হয়েছে:

typedef enum XrAnchorPersistStateANDROID {
    XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID = 0,
    XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID = 1,
    XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID = 2
} XrAnchorPersistStateANDROID;

এনাম

বর্ণনা

XR_ANCHOR_PERSIST_STATE_PERSIST_NOT_REQUESTED_ANDROID

অ্যাঙ্করকে অ্যাপের মাধ্যমে স্থির থাকার জন্য অনুরোধ করা হয়নি।

XR_ANCHOR_PERSIST_STATE_PERSIST_PENDING_ANDROID

অ্যাঙ্করকে স্থির থাকার জন্য অনুরোধ করা হয়েছে কিন্তু এখনও ধরে রাখা হয়নি।

XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID

অ্যাঙ্কর সফলভাবে রানটাইম দ্বারা স্থির করা হয়েছে.

স্থায়ী ডেটা থেকে একটি অ্যাঙ্কর তৈরি করুন

xrCreatePersistedAnchorSpaceANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrCreatePersistedAnchorSpaceANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrPersistedAnchorSpaceCreateInfoANDROID* createInfo,
    XrSpace*                                    anchorOutput);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • createInfo হল XrPersistedAnchorSpaceCreateInfoANDROID যাতে অ্যাঙ্কর তৈরির পরামিতি থাকে।
  • anchorOutput হল একটি XrSpace- এর একটি পয়েন্টার যেখানে নতুন অ্যাঙ্কর স্পেস ফেরত দেওয়া হয়।

অ্যাপ্লিকেশানটি একই XrUuidEXT-এর সাথে xrCreatePersistedAnchorSpaceANDROID- এ কল করে পূর্বে স্থায়ী অ্যাঙ্কর থেকে একটি XrSpace অ্যাঙ্কর তৈরি করতে পারে । এটি XR_ANDROID_trackables এ সংজ্ঞায়িত অ্যাঙ্কর তৈরির আরেকটি উপায়।

  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

XrPersistedAnchorSpaceCreateInfoANDROID গঠনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrPersistedAnchorSpaceCreateInfoANDROID {
    XrStructureType    type;
    void*              next;
    XrUuidEXT          anchorId;
} XrPersistedAnchorSpaceCreateInfoANDROID;

সদস্য বিবরণ

  • type হল এই কাঠামোর XrStructureType
  • next হল NULL বা একটি স্ট্রাকচার চেইনের পরবর্তী কাঠামোর একটি পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনো কাঠামো সংজ্ঞায়িত করা হয়নি।
  • anchorId হল স্থায়ী অ্যাঙ্করের XrUuidEXT থেকে একটি অ্যাঙ্কর XrSpace তৈরি করতে।

XrPersistedAnchorSpaceCreateInfoANDROID কাঠামো xrCreateDeviceAnchorPersistenceANDROID- এ পাস করা হলে অ্যাঙ্করের জন্য তৈরির বিকল্প সরবরাহ করে।

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

স্থায়ী অ্যাঙ্কর গণনা করুন

xrEnumeratePersistedAnchorsANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrEnumeratePersistedAnchorsANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    uint32_t                                    anchorIdsCapacityInput,
    uint32_t*                                   anchorIdsCountOutput,
    XrUuidEXT*                                  anchorIds);

পরামিতি বিবরণ

  • handle হল XrDeviceAnchorPersistenceANDROID
  • anchorIdsCapacityInput হল anchorIds অ্যারের ক্ষমতা, বা 0 প্রয়োজনীয় ক্ষমতা পুনরুদ্ধারের অনুরোধ নির্দেশ করার জন্য।
  • anchorIdsCountOutput হল anchorIds লেখা গণনার একটি পয়েন্টার, অথবা anchorIdsCapacityInput ইনপুট অপর্যাপ্ত হলে প্রয়োজনীয় ক্ষমতার একটি পয়েন্টার।
  • anchorIds হল XrUuidEXT কাঠামোর একটি অ্যারের একটি পয়েন্টার। anchorIdsCapacityInput 0 হলে এটি NULL হতে পারে
  • প্রয়োজনীয় anchorIds আকার পুনরুদ্ধারের বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগটি দেখুন।

অ্যাপ্লিকেশনটি xrEnumeratePersistedAnchorsANDROID-কে কল করে সমস্ত বর্তমান স্থায়ী অ্যাঙ্করগুলি গণনা করতে পারেanchorIds অ্যারের ক্ষমতা পর্যন্ত স্থায়ী অ্যাঙ্করগুলির UUID ধরে রাখবে। যদি ক্ষমতা অপর্যাপ্ত হয়, অ্যাপ্লিকেশনগুলির কোন গ্যারান্টি নেই যে অ্যাঙ্করগুলি ফেরত দেওয়া হবে।

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

  • XR_ANDROID_device_anchor_persistence এক্সটেনশনটি অবশ্যই xrEnumeratePersistedAnchorsANDROID কল করার আগে সক্রিয় করতে হবে
  • handle অবশ্যই একটি বৈধ XrDeviceAnchorPersistenceANDROID হ্যান্ডেল হতে হবে
  • anchorIdsCountOutput একটি uint32_t মানের একটি পয়েন্টার হতে হবে
  • যদি anchorIdsCapacityInput 0, anchorIds অবশ্যই anchorIdsCapacityInput XrUuidEXT কাঠামোর একটি অ্যারের জন্য একটি নির্দেশক হতে হবে

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID
  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SIZE_INSUFFICIENT

একটি অবিরাম নোঙ্গর unpersist

xrUnpersistAnchorANDROID ফাংশনটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

XrResult xrUnpersistAnchorANDROID(
    XrDeviceAnchorPersistenceANDROID            handle,
    const XrUuidEXT*                            anchorId);

পরামিতি বিবরণ

অ্যাপ্লিকেশনটি xrUnpersistAnchorANDROID কল করে একটি স্থায়ী নোঙ্গরকে স্থগিত করতে পারে না এবং অবিরত থাকার জন্য অ্যাঙ্করের অ্যাঙ্কর XrUuidEXT পাস করে।

  • স্থায়ী ডেটা প্রস্তুত না হলে XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID ফেরত দেওয়া হবে৷
  • অ্যাঙ্কর XrUuidEXT না পাওয়া গেলে XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID ফেরত দেওয়া হবে।

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

রিটার্ন কোড

সফলতা

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_VALIDATION_FAILURE
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

নোঙ্গর অধ্যবসায় জন্য উদাহরণ কোড

নিম্নলিখিত উদাহরণ কোডটি প্রদর্শন করে যে কীভাবে সিস্টেমের সক্ষমতা পরিদর্শন করা যায়, স্থির, গণনা করা এবং নোঙ্গরগুলিকে অবিরত করা যায়, সেইসাথে স্থায়ী অ্যাঙ্কর XrUuidEXT থেকে একটি অ্যাঙ্কর তৈরি করা যায়।

XrSession session; // previously initialized
XrSpace anchor; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedPersistenceAnchorTypesANDROID xrEnumerateSupportedPersistenceAnchorTypesANDROID; // previously initialized
PFN_xrCreateDeviceAnchorPersistenceANDROID xrCreateDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrDestroyDeviceAnchorPersistenceANDROID xrDestroyDeviceAnchorPersistenceANDROID; // previously initialized
PFN_xrPersistAnchorANDROID xrPersistAnchorANDROID; // previously initialized
PFN_xrGetAnchorPersistStateANDROID xrGetAnchorPersistStateANDROID; // previously initialized
PFN_xrCreatePersistedAnchorSpaceANDROID xrCreatePersistedAnchorSpaceANDROID; // previously initialized
PFN_xrEnumeratePersistedAnchorsANDROID xrEnumeratePersistedAnchorsANDROID; // previously initialized
PFN_xrUnpersistAnchorANDROID xrUnpersistAnchorANDROID; // previously initialized

// Create a device anchor persistence handle
XrDeviceAnchorPersistenceCreateInfoANDROID persistenceHandleCreateInfo;
persistenceHandleCreateInfo.type = XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID;
persistenceHandleCreateInfo.next = nullptr;

XrDeviceAnchorPersistenceANDROID persistenceHandle;
CHK_XR(xrCreateDeviceAnchorPersistenceANDROID(session, &persistenceHandleCreateInfo, &persistenceHandle));

/// Persist an anchor
XrPersistedAnchorSpaceInfo anchorSpaceInfo;
anchorSpaceInfo.type = XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID;
anchorSpaceInfo.next = nullptr;
anchorSpaceInfo.anchor = anchor;

XrUuidEXT anchorId;
CHK_XR(xrPersistAnchorANDROID(persistenceHandle, &anchorSpaceInfo, &anchorId));

// ... Update loop ...
// Poll for anchor persist state to confirm if it was successfully persisted
XrAnchorPersistStateANDROID persistState;
CHK_XR(xrGetAnchorPersistStateANDROID(persistenceHandle, &anchorId, &persistState));
if (persistState == XR_ANCHOR_PERSIST_STATE_PERSISTED_ANDROID)  {
  // The anchor was persisted successfully
}

// Enumerate all persisted anchors
uint32_t anchorCountOutput = 0;
std::vector<XrUuidEXT> allAnchors;

CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  nullptr
));
allAnchors.resize(anchorCountOutput, XR_NULL_HANDLE);

// Fetch the actual anchors in an appropriately resized array.
CHK_XR(xrEnumeratePersistedAnchorsANDROID(
  persistenceHandle,
  anchorCountOutput,
  &anchorCountOutput,
  allAnchors.data()
));

// Creating an anchor from a previously persisted anchor using its UUID
XrTime updateTime; // Time used for the current frame's simulation update.
XrUuidEXT anchorId = allAnchors[0];

XrPersistedAnchorSpaceCreateInfo createInfo;
createInfo.type = XR_TYPE_PERSISTED_ANCHOR_CREATE_INFO_ANDROID;
createInfo.next = nullptr;
createInfo.anchorId = anchorId;

XrSpace anchorSpace = XR_NULL_HANDLE;
CHK_XR(xrCreatePersistedAnchorSpaceANDROID(
  persistenceHandle,
  &createInfo,
  &anchorSpace
));

// The anchor was found and retrieved from the local device successfully.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
CHK_XR(xrLocateSpace(anchorSpace, appSpace, updateTime, &anchorLocation));
XrPosef pose = anchorLocation.pose;

// Once app is done with all persistence related tasks
CHK_XR(xrDestroySpace(anchorSpace));
CHK_XR(xrDestroyDeviceAnchorPersistenceANDROID(persistenceHandle));

নতুন অবজেক্টের ধরন

নতুন Enum ধ্রুবক

XrObjectType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_OBJECT_TYPE_DEVICE_ANCHOR_PERSISTENCE_ANDROID

XrResult গণনা এর সাথে বর্ধিত করা হয়েছে:

  • XR_ERROR_ANCHOR_ID_NOT_FOUND_ANDROID
  • XR_ERROR_ANCHOR_ALREADY_PERSISTED_ANDROID
  • XR_ERROR_ANCHOR_NOT_TRACKING_ANDROID
  • XR_ERROR_PERSISTED_DATA_NOT_READY_ANDROID

XrStructureType গণনা এর সাথে প্রসারিত করা হয়েছে:

  • XR_TYPE_PERSISTED_ANCHOR_ANDROID
  • XR_TYPE_PERSISTED_ANCHOR_SPACE_CREATE_INFO_ANDROID
  • XR_TYPE_PERSISTED_ANCHOR_SPACE_INFO_ANDROID
  • XR_TYPE_DEVICE_ANCHOR_PERSISTENCE_CREATE_INFO_ANDROID

নতুন Enums

নতুন কাঠামো

নতুন ফাংশন

ইস্যু

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

  • রিভিশন 1, 2024-10-10 (কেনি ভার্কেমার)
    • প্রাথমিক এক্সটেনশন বর্ণনা