XR_EXT_spatial_image_tracking

নামের স্ট্রিং

XR_EXT_spatial_image_tracking

এক্সটেনশনের ধরন

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

রেজিস্টার করা এক্সটেনশন নম্বর

783

সংশোধন

1

অনুমোদনের স্ট্যাটাস

অনুমোদিত নয়

এক্সটেনশন ও ভার্সন ডিপেন্ডেন্সি

XR_EXT_spatial_entity

কন্ট্রিবিউটর

Daniel Guttenberg, Qualcomm
Nihav Jain, Google
Jared Finder, Google
Zhipeng Liu, ByteDance

এক নজরে

এই এক্সটেনশন XR_EXT_spatial_entity এক্সটেনশনের জন্য ইমেজ ট্র্যাকিং ক্ষমতা প্রদান করে। এটি ইনপুট রেফারেন্স ছবির সেট দ্বারা নির্দিষ্ট করা নির্দিষ্ট প্ল্যানার ছবি শনাক্ত ও ট্র্যাক করতে অ্যাপ্লিকেশনকে সক্ষম করে।

ট্র্যাক করা ছবিকে নিম্নলিখিত কম্পোনেন্ট সহ (বা "যেটিতে আছে") স্পেশিয়াল এন্টিটি হিসেবে দেখানো হয়:

  • XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

অ্যাপ্লিকেশন সাধারণত নিম্নলিখিত প্যাটার্নে স্পেশিয়াল ইমেজ ট্র্যাকিং এক্সটেনশন ব্যবহার করে:

  • একটি অ্যাপ্লিকেশন প্রথমে প্রিলোড করা রেফারেন্স ইমেজ ডেটার সেটের উপর ভিত্তি করে এক বা একাধিক XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল তৈরি করে।
  • অ্যাপ্লিকেশনটি তখন আগে তৈরি করা XrSpatialImageTrackingDatabaseEXT হ্যান্ডেলের উপর ভিত্তি করে একটি XrSpatialContextEXT হ্যান্ডেল তৈরি করে।
  • তারপর, অ্যাপ্লিকেশনটি মেমরি খরচ কমাতে রেফারেন্স ইমেজ ডেটা রিলিজ করে।
  • অ্যাপ্লিকেশনটি স্পেশিয়াল এন্টিটি অ্যাক্সেস প্যাটার্ন অনুযায়ী ছবি খুঁজে বের করে এবং কোয়েরি করে।
  • অ্যাপ্লিকেশনটি রেফারেন্স ইমেজের অতিরিক্ত সেট লোড করতে পারে এবং অতিরিক্ত XrSpatialImageTrackingDatabaseEXT এবং পরবর্তীতে সেগুলি থেকে XrSpatialContextEXT তৈরি করতে পারে যাতে রানটাইমে শনাক্তযোগ্য এবং ট্র্যাকযোগ্য ইমেজের সেট ডাইনামিকভাবে বাড়ানো যায়।
  • রানটাইমে শনাক্ত ও ট্র্যাক করা যায় এমন ছবির সেট ডায়নামিকভাবে কমাতে, অ্যাপ্লিকেশনটি XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল ধ্বংস করতে পারে।
  • রানটাইমে শনাক্ত ও ট্র্যাক করা যায় এমন ছবির সেট ডায়নামিকভাবে কমাতে, অ্যাপ্লিকেশনটি XrSpatialContextEXT হ্যান্ডেল ধ্বংস করতে পারে।

রানটাইম সংক্রান্ত সহায়তা

রানটাইমকে অবশ্যই xrEnumerateSpatialCapabilitiesEXT ব্যবহার করে ইমেজ ট্র্যাকিং ক্ষমতার জন্য তার সাপোর্ট বিজ্ঞাপন করতে হবে, নিম্নলিখিত ক্ষমতা তালিকাভুক্ত করে:

  • XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT

কনফিগারেশন

প্ল্যানার ছবি শনাক্তকরণ ও ট্র্যাকিং চালু করতে, অ্যাপ্লিকেশন XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ XrSpatialCapabilityConfigurationImageTrackingEXT স্ট্রাকচার পাস করতে পারে, যখন xrCreateSpatialContextAsyncEXT ফাংশন কল করা হয় এবং প্রতিটি XrSpatialCapabilityConfigurationImageTrackingEXT :: imageTrackingDatabases-এ< XrSpatialImageTrackingDatabaseEXT স্ট্রাকচারের অ্যারে পাস করা হয়।

ইনপুট ছবি সেট তৈরি করা

শনাক্ত ও ট্র্যাক করার জন্য রেফারেন্স ইমেজ নির্দিষ্ট করতে, অ্যাপ্লিকেশনকে অবশ্যই অন্তত একটি ইনপুট রেফারেন্স ইমেজের সেট তৈরি করতে হবে। ইনপুট রেফারেন্স ইমেজের একটি সেট XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল দ্বারা উপস্থাপিত হয় এবং এতে অন্তত একটি ছবি থাকে।

XR_DEFINE_HANDLE(XrSpatialImageTrackingDatabaseEXT)

XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল ব্যবহারকারীর এনভায়রনমেন্টে কিছু সংখ্যক স্পেশিয়াল ইমেজ খুঁজে পাওয়া ও আপডেট করার রিসোর্সকে দেখায়। অ্যাপ্লিকেশনগুলি এই এক্সটেনশনের অন্যান্য ফাংশন ব্যবহার করে স্পেশিয়াল ছবিগুলি আবিষ্কার এবং আপডেট করতে এই হ্যান্ডেলটি ব্যবহার করতে পারে।

স্পেশিয়াল ইমেজ ট্র্যাকিং ডেটাবেস তৈরি করুন

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

XrResult xrCreateSpatialImageTrackingDatabaseAsyncEXT(
    XrSession                                   session,
    const XrSpatialImageTrackingDatabaseCreateInfoEXT* createInfo,
    XrFutureEXT*                                future);

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

  • session হল একটি XrSession যেখানে স্পেশিয়াল ইমেজ ট্র্যাকিং ডেটাবেস অ্যাক্টিভ থাকবে।
  • createInfo হল XrSpatialImageTrackingDatabaseCreateInfoEXT যা স্পেশিয়াল ইমেজ ট্র্যাকিং ডেটাবেস প্যারামিটার নির্দিষ্ট করতে ব্যবহার করা হয়।
  • future হল XrFutureEXT-এর একটি পয়েন্টার।

কোনও অ্যাপ্লিকেশন xrCreateSpatialImageTrackingDatabaseAsyncEXT ফাংশন ব্যবহার করে XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল তৈরি করতে পারে এবং createInfo-এর মাধ্যমে ইমেজ ট্র্যাকিং ডেটাবেসের ইনপুট রেফারেন্স ইমেজের সেট কনফিগার করতে পারে।

রানটাইম অবশ্যই XR_ERROR_SPATIAL_IMAGE_FORMAT_UNSUPPORTED_EXT রিটার্ন করবে যদি কোনও ইনপুট রেফারেন্স ইমেজের XrSpatialReferenceImageEXT :: format xrEnumerateSpatialReferenceImageFormatsEXT দ্বারা গণনা করা না হয়।

XrSpatialReferenceImageEXT-এর রেফারেন্স ইমেজ মেটাডেটা অনুযায়ী ইনপুট রেফারেন্স ইমেজের যেকোনও একটির XrSpatialReferenceImageEXT :: planes অ্যারে মূল্যায়ন করা না গেলে, রানটাইমকে XR_ERROR_SPATIAL_IMAGE_INVALID_EXT রিটার্ন করতেই হবে।

রানটাইমকে XR_ERROR_SPATIAL_IMAGE_INVALID_EXT রিটার্ন করতেই হবে যদি কোনও ইনপুট রেফারেন্স ইমেজের XrSpatialReferenceImageEXT :: planes অ্যারে ঠিক ততগুলি প্লেন প্রদান না করে যতগুলি XrSpatialReferenceImageEXT :: format-এ কালার চ্যানেল আছে।

রানটাইম যদি ইমেজ ট্র্যাকিং ক্ষমতার জন্য অ্যাপ্লিকেশন অ্যাক্সেস নিয়ন্ত্রণ করতে একটি অনুমতি সিস্টেম প্রয়োগ করে, তাহলে এই অ্যাপ্লিকেশনটিকে সেই অনুমতিগুলি না দেওয়া হলে রানটাইম অবশ্যই XR_ERROR_PERMISSION_INSUFFICIENT রিটার্ন করবে।

এই ফাংশনটি একটি অ্যাসিঙ্ক্রোনাস অপারেশন শুরু করে এবং একটি সংশ্লিষ্ট XrFutureEXT তৈরি করে, যা xrPollFutureEXT এবং সম্পর্কিত ফাংশনের সাথে ব্যবহার করা যায়। এই ফাংশনের রিটার্ন ভ্যালু শুধুমাত্র এটিই দেখায় যে অ্যাসিঙ্ক্রোনাস অপারেশন শিডিউল করার জন্য প্যারামিটারগুলি গ্রহণযোগ্য ছিল কিনা। সম্পূর্ণ করার সংশ্লিষ্ট ফাংশন হল xrCreateSpatialImageTrackingDatabaseCompleteEXT , যা এই ফাংশন থেকে পাওয়া ফিউচার READY অবস্থায় থাকলে ব্যবহার করা যায়, যেখানে সম্পূর্ণ করার স্ট্রাকচার XrCreateSpatialImageTrackingDatabaseCompletionEXT -এ সেই ফাংশন দ্বারা আউটপুট পপুলেট করা হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrCreateSpatialImageTrackingDatabaseAsyncEXT কল করার আগে XR_EXT_spatial_image_tracking এক্সটেনশন অবশ্যই চালু করতে হবে
  • session অবশ্যই একটি সঠিক XrSession হ্যান্ডেল হতে হবে
  • createInfo অবশ্যই একটি সঠিক XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারের পয়েন্টার হতে হবে
  • future অবশ্যই XrFutureEXT ভ্যালুর পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_LIMIT_REACHED
  • XR_ERROR_OUT_OF_MEMORY
  • XR_ERROR_PERMISSION_INSUFFICIENT
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SESSION_LOST
  • XR_ERROR_SPATIAL_IMAGE_FORMAT_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_IMAGE_INVALID_EXT
  • XR_ERROR_SPATIAL_IMAGE_SIZE_MISSING_EXT
  • XR_ERROR_VALIDATION_FAILURE

XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialImageTrackingDatabaseCreateInfoEXT {
    XrStructureType                      type;
    const void*                          next;
    uint32_t                             spatialReferenceImageCount;
    const XrSpatialReferenceImageEXT*    spatialReferenceImages;
} XrSpatialImageTrackingDatabaseCreateInfoEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • spatialReferenceImageCount হল spatialReferenceImages অ্যারেতে থাকা এলিমেন্টের সংখ্যা।
  • spatialReferenceImages হল XrSpatialReferenceImageEXT-এর একটি অ্যারে।

XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারটি XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল তৈরি করার তথ্য বর্ণনা করে।

প্রতিটি XrSpatialImageTrackingDatabaseEXT অবশ্যই XrSpatialImageTrackingDatabaseCreateInfoEXT :: spatialReferenceImages অ্যারেতে অন্তত একটি XrSpatialReferenceImageEXT সহ তৈরি করতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

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

XrResult xrCreateSpatialImageTrackingDatabaseCompleteEXT(
    XrSession                                   session,
    XrFutureEXT                                 future,
    XrCreateSpatialImageTrackingDatabaseCompletionEXT* completion);

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

xrCreateSpatialImageTrackingDatabaseCompleteEXT, xrCreateSpatialImageTrackingDatabaseAsyncEXT দ্বারা শুরু করা অ্যাসিঙ্ক্রোনাস অপারেশন সম্পূর্ণ করে।

রানটাইম অবশ্যই কোনও XrSpatialReferenceImagePlaneEXT :: buffer পয়েন্টার অ্যাক্সেস করবে না যা XrSpatialImageTrackingDatabaseCreateInfoEXT :: spatialReferenceImages ইনপুট অ্যারে এই xrCreateSpatialImageTrackingDatabaseAsyncEXT কলের জন্য প্রদান করেছে, এটি সম্পূর্ণ হওয়ার পরে। xrCreateSpatialImageTrackingDatabaseAsyncEXT সম্পূর্ণ হওয়ার পরে, মেমরি ফুটপ্রিন্ট কমানোর জন্য, অ্যাপ্লিকেশনটি যেকোনও XrSpatialReferenceImagePlaneEXT :: buffer ডেটা ফ্রি করতে পারে।

future রেডি অবস্থায় না থাকলে রানটাইমকে XR_ERROR_FUTURE_PENDING_EXT রিটার্ন করতেই হবে। future আগে থেকেই সম্পূর্ণ বা বাতিল করা হয়ে থাকলে, রানটাইমকে XR_ERROR_FUTURE_INVALID_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

রিটার্ন কোড

হয়ে গেছে

  • 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

XrCreateSpatialImageTrackingDatabaseCompletionEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrCreateSpatialImageTrackingDatabaseCompletionEXT {
    XrStructureType                      type;
    void*                                next;
    XrResult                             futureResult;
    XrSpatialImageTrackingDatabaseEXT    database;
} XrCreateSpatialImageTrackingDatabaseCompletionEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • futureResult হল স্পেশিয়াল ইমেজ ট্র্যাকিং ডেটাবেস তৈরি করার অপারেশনের XrResult।
  • database হল একটি XrSpatialImageTrackingDatabaseEXT যা xrCreateSpatialImageTrackingDatabaseAsyncEXT :: createInfo -এ ডেটা এবং কনফিগারেশন ব্যবহার করে তৈরি করা হয়েছে।

ভবিষ্যতের রিটার্ন কোড

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_SPATIAL_IMAGE_FORMAT_UNSUPPORTED_EXT
  • XR_ERROR_SPATIAL_IMAGE_INVALID_EXT

futureResult যদি একটি সাকসেস কোড হয়, তাহলে database অবশ্যই একটি সঠিক হ্যান্ডেল হতে হবে। database বৈধ হলে, এটি শুধুমাত্র xrCreateSpatialImageTrackingDatabaseAsyncEXT :: session-এর লাইফসাইকেলের মধ্যে অথবা অ্যাপ্লিকেশন xrDestroySpatialImageTrackingDatabaseEXT-এর মাধ্যমে database ধ্বংস না করা পর্যন্ত বৈধ থাকে, যেটি আগে হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

স্পেশিয়াল ইমেজ ট্র্যাকিং ডেটাবেস ধ্বংস করুন

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

XrResult xrDestroySpatialImageTrackingDatabaseEXT(
    XrSpatialImageTrackingDatabaseEXT           database);

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

স্পেশিয়াল ইমেজ ডিসকভারি ও আপডেট করার টাস্ক সম্পূর্ণ হয়ে গেলে, database হ্যান্ডেল ও অন্তর্নিহিত রিসোর্স রিলিজ করার জন্য অ্যাপ্লিকেশনটি xrDestroySpatialImageTrackingDatabaseEXT ফাংশন কল করতে পারে।

অ্যাপ্লিকেশনটি xrDestroySpatialContextEXT কল করার আগে xrDestroySpatialImageTrackingDatabaseEXT ফাংশন কল করতে পারে। রানটাইম অবশ্যই আর এই ধ্বংস করা XrSpatialImageTrackingDatabaseEXT দ্বারা ম্যানেজ করা ছবি রিপোর্ট করবে না। রানটাইমকে অবশ্যই অন্যান্য ডেটাবেস দ্বারা ম্যানেজ করা ছবি সম্পর্কে রিপোর্ট করা চালিয়ে যেতে হবে।

রানটাইমকে অবশ্যই নিশ্চিত করতে হবে যে xrCreateSpatialDiscoverySnapshotCompleteEXT-এর মাধ্যমে ফিরিয়ে আনা ডিসকভারি স্ন্যাপশটে নষ্ট হয়ে যাওয়া বা অন্য কোনওভাবে ভুল XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল সম্পর্কিত ছবি নেই, এমনকি অ্যাপ্লিকেশন xrCreateSpatialDiscoverySnapshotAsyncEXT কল করার পরে হ্যান্ডেলটি নষ্ট হয়ে গেলেও। স্পেশিয়াল স্ন্যাপশটের ডেটা অপরিবর্তনীয় হওয়ার কারণে, database ধ্বংস করার আগে তৈরি করা যেকোনও XrSpatialSnapshotEXT হ্যান্ডেল অ্যাপ্লিকেশনকে ধ্বংস করতে হবে, অন্যথায় xrQuerySpatialComponentDataEXT ব্যবহার করার সময় অ্যাপ্লিকেশন ভুল XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল পেতে পারে।

XrSpatialContextEXT যে XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল দিয়ে তৈরি করা হয়েছে, তার কোনওটি নষ্ট করার আগে XrSpatialContextEXT হ্যান্ডেল রিলিজ করার জন্য অ্যাপ্লিকেশনটি xrDestroySpatialContextEXT ফাংশন কল করতে পারে। XrSpatialContextEXT ধ্বংস হয়ে গেলে রানটাইমকে অবশ্যই এই XrSpatialImageTrackingDatabaseEXT হ্যান্ডেলগুলি ধ্বংস করতে হবে।

XrSpatialContextEXT এবং XrSpatialImageTrackingDatabaseEXT-এর লাইফটাইম স্বাধীনভাবে ম্যানেজ করার ফলে, অ্যাপ্লিকেশনগুলি আগে তৈরি করা XrSpatialImageTrackingDatabaseEXT হ্যান্ডেলগুলি আবার ব্যবহার করতে পারে, যার ফলে জটিল এবং ব্যয়বহুল তৈরির পদ্ধতি আবার করতে হয় না।

যেমন, একটি XrSpatialContextEXT ধ্বংস করা এবং পরবর্তীতে একই XrSpatialImageTrackingDatabaseEXT সহ আরেকটি XrSpatialContextEXT পুনরায় তৈরি করা, অন্য একটি ইনিশিয়ালাইজেশন পদ্ধতি সম্পাদন করার প্রয়োজন ছাড়াই ইমেজ ট্র্যাকিং পজ এবং আবার চালু করার সুবিধা দেয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

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

  • database এবং যেকোনও চাইল্ড হ্যান্ডেল অ্যাক্সেস করার সুবিধা, অবশ্যই এক্সটার্নালভাবে সিঙ্ক করতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_RUNTIME_FAILURE

ইনপুট ছবির ফর্ম্যাট সাপোর্ট

অ্যাপ্লিকেশনকে xrEnumerateSpatialReferenceImageFormatsEXT কল করতে হবে যাতে কাজ করে এমন ইনপুট রেফারেন্স ইমেজ ফর্ম্যাটের তালিকা পাওয়া যায়।

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

XrResult xrEnumerateSpatialReferenceImageFormatsEXT(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrSpatialCapabilityEXT                      capability,
    uint32_t                                    formatCapacityInput,
    uint32_t*                                   formatCountOutput,
    XrSpatialReferenceImageFormatEXT*           formats);

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

  • instance হল XrInstance-এর হ্যান্ডেল।
  • systemId হল XrSystemId যার ইনপুট রেফারেন্স ইমেজের ফর্ম্যাট গণনা করা হবে।
  • capability হল XrSpatialCapabilityEXT যার জন্য ইনপুট রেফারেন্স ইমেজ ফর্ম্যাট গণনা করা হবে।
  • formatCapacityInput হল formats অ্যারের ক্যাপাসিটি, অথবা প্রয়োজনীয় ক্যাপাসিটি ফিরিয়ে আনার অনুরোধ জানাতে 0।
  • formatCountOutput হল ফর্ম্যাটের সংখ্যা, অথবা formatCapacityInput পর্যাপ্ত না হলে প্রয়োজনীয় ক্ষমতা।
  • formats হল XrSpatialReferenceImageFormatEXT-এর একটি অ্যারে। formatCapacityInput ০ হলে এটি NULL হতে পারে।
  • প্রয়োজনীয় formats সাইজ ফিরিয়ে আনার বিস্তারিত বিবরণের জন্য বাফার সাইজ প্যারামিটার বিভাগ দেখুন।

অ্যাপ্লিকেশনটি xrEnumerateSpatialReferenceImageFormatsEXT ব্যবহার করে নির্দিষ্ট XrSpatialCapabilityEXT-এর জন্য নির্দিষ্ট XrSystemId দ্বারা সমর্থিত ইনপুট রেফারেন্স ইমেজ ফর্ম্যাটের তালিকা গণনা করতে পারে।

রানটাইম অবশ্যই instance-এর জন্য চালু না থাকা এক্সটেনশনের ফর্ম্যাট গণনা করবে না।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • xrEnumerateSpatialReferenceImageFormatsEXT কল করার আগে XR_EXT_spatial_image_tracking এক্সটেনশন অবশ্যই চালু করতে হবে
  • instance অবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে
  • capability অবশ্যই একটি সঠিক XrSpatialCapabilityEXT ভ্যালু হতে হবে
  • formatCountOutput অবশ্যই uint32_t ভ্যালুর পয়েন্টার হতে হবে
  • formatCapacityInput যদি 0 না হয়, তাহলে formats অবশ্যই formatCapacityInput XrSpatialReferenceImageFormatEXT মানের অ্যারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

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

যেকোনও এক্সটেনশনে কাজ করে এমন সব রেফারেন্স ইমেজ ফর্ম্যাটের সম্পূর্ণ তালিকা দেখতে XrSpatialReferenceImageFormatEXT দেখুন।

typedef enum XrSpatialReferenceImageFormatEXT {
    XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGBA_8888_EXT = 1,
    XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGB_888_EXT = 2,
    XR_SPATIAL_REFERENCE_IMAGE_FORMAT_YUV_420_888_EXT = 3,
    XR_SPATIAL_REFERENCE_IMAGE_FORMAT_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialReferenceImageFormatEXT;

XrSpatialReferenceImageFormatEXT এনিউমারেশন ইনপুট রেফারেন্স ইমেজ ফর্ম্যাট শনাক্ত করে যা রানটাইম হয়ত সাপোর্ট করে।

অন্তত XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGBA_8888_EXT ভ্যালু এবং XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGB_888_EXT ভ্যালু অবশ্যই কাজ করতে হবে।

এনিউমারেন্টের অর্থ নিচে দেওয়া হল:

Enumerant-এর বিবরণ

  • XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGBA_8888_EXT — একটি RGBA বাফার। মেমরিতে পিক্সেল ডেটার লেআউট সম্পর্কে ফর্ম্যাটটি কোনও গ্যারান্টি দেয় না। সংশ্লিষ্ট XrSpatialReferenceImagePlaneEXT স্ট্রাকচারের মাধ্যমে প্রদান করা মেটাডেটা ব্যবহার করে পিক্সেল অবশ্যই অ্যাক্সেস করতে হবে। প্রতিটি পিক্সেল কালার চ্যানেলের সাইজ ৮ বিট, যার ফলে প্রতিটি পিক্সেলের সাইজ ৩২ বিট হয়।
  • XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGB_888_EXT — একটি RGB বাফার। মেমরিতে পিক্সেল ডেটার লেআউট সম্পর্কে ফর্ম্যাটটি কোনও গ্যারান্টি দেয় না। সংশ্লিষ্ট XrSpatialReferenceImagePlaneEXT স্ট্রাকচারের মাধ্যমে প্রদান করা মেটাডেটা ব্যবহার করে পিক্সেল অবশ্যই অ্যাক্সেস করতে হবে। প্রতিটি পিক্সেল কালার চ্যানেলের সাইজ ৮ বিট, যার ফলে প্রতিটি পিক্সেলের সাইজ ২৪ বিট হয়।
  • XR_SPATIAL_REFERENCE_IMAGE_FORMAT_YUV_420_888_EXT — একটি YUV বাফার যা 4:2:0 প্যাটার্ন ক্রোমা সাব-স্যাম্পল করা হয়েছে। মেমরিতে পিক্সেল ডেটার লেআউট সম্পর্কে ফর্ম্যাটটি কোনও গ্যারান্টি দেয় না। সংশ্লিষ্ট XrSpatialReferenceImagePlaneEXT স্ট্রাকচারের মাধ্যমে প্রদান করা মেটাডেটা ব্যবহার করে পিক্সেল অবশ্যই অ্যাক্সেস করতে হবে। ডিকোড করা প্রতিটি RGB পিক্সেল কালার চ্যানেলের সাইজ ৮ বিট, যার ফলে প্রতিটি পিক্সেলের সাইজ ২৪ বিট হয়।

স্পেশিয়াল ইমেজ ট্র্যাকিং সেটিংস

এই এক্সটেনশনটি ঐচ্ছিক স্ট্রাকচার প্রদান করে যা অ্যাপ্লিকেশনটি ইমেজ ট্র্যাকিং ক্ষমতা কনফিগার করার জন্য ব্যবহার করতে পারে।

স্ট্যাটিক ইমেজ অপ্টিমাইজেশন

XrSpatialImageStaticOptimizationEXT স্ট্রাকচারটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialImageStaticOptimizationEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           optimizeForStaticImage;
} XrSpatialImageStaticOptimizationEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • optimizeForStaticImage হল একটি XrBool32 যা ছবি নড়াচড়া করে কিনা তা নির্দেশ করে। XR_TRUE ভ্যালু থাকলে বুঝতে হবে যে ছবিগুলি নড়াচড়া করে না।

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT ক্ষমতার জন্য xrEnumerateSpatialCapabilityFeaturesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT গণনা করা হলে, অ্যাপ্লিকেশনটি XrSpatialImageStaticOptimizationEXT-কে XrSpatialImageTrackingDatabaseCreateInfoEXT :: next চেনের সাথে অথবা XrSpatialReferenceImageEXT :: next-এর সাথে চেন করতে পারবে।

অ্যাপ্লিকেশন যদি XrSpatialImageStaticOptimizationEXT-কে XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারের সাথে চেন করে, তাহলে রানটাইমকে অবশ্যই ধরে নিতে হবে যে XrSpatialImageTrackingDatabaseEXT-এর সব ছবি স্ট্যাটিক, যদি optimizeForStaticImage-কে XR_TRUE হিসেবে সেট করা হয়। একইভাবে, রানটাইমকে অবশ্যই ধরে নিতে হবে যে optimizeForStaticImage-কে XR_FALSE-এ সেট করা হলে, সেই XrSpatialImageTrackingDatabaseEXT-এর সব ছবি স্ট্যাটিক নয়।

অ্যাপ্লিকেশন যদি XrSpatialReferenceImageEXT স্ট্রাকচারে XrSpatialImageStaticOptimizationEXT চেন করে, তাহলে রানটাইমকে অবশ্যই ধরে নিতে হবে যে এই রেফারেন্স ইমেজটি স্ট্যাটিক, যদি optimizeForStaticImage-কে XR_TRUE-এ সেট করা হয়। একইভাবে, রানটাইমকে অবশ্যই ধরে নিতে হবে যে optimizeForStaticImage-এর মান XR_FALSE-এ সেট করা থাকলে এই রেফারেন্স ইমেজটি স্ট্যাটিক নয়। XrSpatialReferenceImageEXT স্ট্রাকচারের সাথে XrSpatialImageStaticOptimizationEXT স্ট্রাকচার চেইন করা, XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারের সাথে চেইন করার চেয়ে বেশি অগ্রাধিকার পায়।

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT ক্ষমতার জন্য xrEnumerateSpatialCapabilityFeaturesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT গণনা করা না হলে এবং অ্যাপ্লিকেশনটি প্রযোজ্য পরবর্তী চেনের যেকোনও একটির সাথে XrSpatialImageStaticOptimizationEXT স্ট্রাকচার চেন করলে, রানটাইমকে অবশ্যই xrCreateSpatialImageTrackingDatabaseAsyncEXT থেকে XR_ERROR_VALIDATION_FAILURE রিটার্ন করতে হবে।

এটি রানটাইমকে আরও সঠিক পোজ এবং সাইজ তৈরি করার অনুমতি দিতে পারে।

এটি রানটাইমকে বিদ্যুৎ খরচ কমাতে সাহায্য করতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

রেফারেন্স ইমেজের প্রস্থ

XrSpatialImageSizeEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialImageSizeEXT {
    XrStructureType    type;
    const void*        next;
    float              physicalWidth;
} XrSpatialImageSizeEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • physicalWidth হল একটি float মান যা সেট করার জন্য মিটারে প্রকৃত প্রস্থকে উপস্থাপন করে।

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT ক্ষমতার জন্য xrEnumerateSpatialCapabilityFeaturesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT গণনা করা হলে, অ্যাপ্লিকেশনটি XrSpatialImageSizeEXT-কে XrSpatialImageTrackingDatabaseCreateInfoEXT :: next বা XrSpatialReferenceImageEXT :: next-এর সাথে চেইন করতে পারবে।

অ্যাপ্লিকেশনটি XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারে XrSpatialImageSizeEXT চেইন করলে, রানটাইমকে অবশ্যই ধরে নিতে হবে যে XrSpatialImageTrackingDatabaseEXT-এর সব ছবির প্রস্থ physicalWidth মিটার এবং উচ্চতা XrSpatialReferenceImageEXT :: width এবং XrSpatialReferenceImageEXT :: height-এর মাধ্যমে স্পষ্টভাবে প্রদান করা অ্যাসপেক্ট রেশিও অনুযায়ী হবে।

অ্যাপ্লিকেশন যদি XrSpatialImageSizeEXT-কে XrSpatialReferenceImageEXT স্ট্রাকচারের সাথে চেন করে, তাহলে রানটাইমকে অবশ্যই ধরে নিতে হবে যে এই রেফারেন্স ইমেজের প্রস্থ physicalWidth মিটার এবং উচ্চতা XrSpatialReferenceImageEXT :: width এবং XrSpatialReferenceImageEXT :: height-এর মাধ্যমে ইমপ্লিসিটভাবে প্রদান করা অ্যাসপেক্ট রেশিও অনুযায়ী। XrSpatialImageSizeEXT স্ট্রাকচারকে XrSpatialReferenceImageEXT স্ট্রাকচারের সাথে চেইন করা, XrSpatialImageTrackingDatabaseCreateInfoEXT স্ট্রাকচারের সাথে চেইন করার চেয়ে বেশি অগ্রাধিকার পায়।

এটি রানটাইমকে আরও সঠিক পোজ এবং সাইজ ফিরিয়ে দেওয়ার অনুমতি দিতে পারে।

রানটাইমে অবশ্যই XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT বা XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT অথবা দুটিই গণনা করতে হবে।

XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT যদি xrEnumerateSpatialCapabilityFeaturesEXT দ্বারা গণনা করা হয়, তাহলে রানটাইমকে অবশ্যই অটোমেটিক ছবির সাইজ প্রদান করতে হবে, যার জন্য অ্যাপ্লিকেশনটি প্রযোজ্য পরবর্তী চেনের অংশ হিসেবে কোনও XrSpatialImageSizeEXT স্ট্রাকচার প্রদান করেনি।

রানটাইম যাতে অটোমেটিক ও সঠিকভাবে ছবির সাইজ জেনারেট করতে পারে, তার জন্য ডিভাইসের নির্দিষ্ট কিছু ক্ষমতা ও পূর্বশর্তের প্রয়োজন হতে পারে; যেমন, স্টেরিও ক্যামেরা, সঠিকভাবে ক্যালিব্রেট করা ক্যামেরার এক্সট্রিনসিক ও ইন্ট্রিনসিক প্যারামিটার।

xrEnumerateSpatialCapabilityFeaturesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT গণনা করা না হলে, অ্যাপ্লিকেশনকে অবশ্যই XrSpatialImageSizeEXT স্ট্রাকচারকে প্রযোজ্য পরবর্তী চেনে লিঙ্ক করতে হবে যাতে সব ছবির জন্য একটি নির্দিষ্ট সাইজ প্রদান করা হয়, অন্যথায় রানটাইমকে অবশ্যই xrCreateSpatialImageTrackingDatabaseAsyncEXT থেকে XR_ERROR_SPATIAL_IMAGE_SIZE_MISSING_EXT ফিরিয়ে দিতে হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

XrSpatialCapabilityConfigurationImageTrackingEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialCapabilityConfigurationImageTrackingEXT {
    XrStructureType                             type;
    const void*                                 next;
    XrSpatialCapabilityEXT                      capability;
    uint32_t                                    enabledComponentCount;
    const XrSpatialComponentTypeEXT*            enabledComponents;
    uint32_t                                    imageTrackingDatabaseCount;
    const XrSpatialImageTrackingDatabaseEXT*    imageTrackingDatabases;
} XrSpatialCapabilityConfigurationImageTrackingEXT;

মেম্বারদের বিবরণ

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • capability হল একটি XrSpatialCapabilityEXT এবং অবশ্যই XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT হতে হবে।
  • enabledComponentCount হল একটি uint32_t যা enabledComponents-এ এলিমেন্টের সংখ্যা নির্দিষ্ট করে।
  • enabledComponents হল XrSpatialComponentTypeEXT-এর একটি অ্যারে যা এই ক্ষমতার জন্য চালু করার কম্পোনেন্ট নির্দিষ্ট করে।
  • imageTrackingDatabaseCount হল একটি unint32_t যা imageTrackingDatabases-এ এলিমেন্টের সংখ্যা নির্দিষ্ট করে।
  • imageTrackingDatabases হল XrSpatialImageTrackingDatabaseEXT হ্যান্ডেলের একটি অ্যারে যা স্পেশাল কনটেক্সটের জন্য চালু করতে ইমেজ ট্র্যাকিং ডেটাবেস নির্দিষ্ট করে।

ইমেজ ট্র্যাকিং কাজ করলে, xrCreateSpatialContextAsyncEXT কল করার সময় XrSpatialContextCreateInfoEXT :: capabilityConfigs-এ XrSpatialCapabilityConfigurationImageTrackingEXT স্ট্রাকচার পাস করা হলে, রানটাইমকে অবশ্যই ইমেজ ট্র্যাকিং চালু করতে হবে।

XrSpatialCapabilityConfigurationImageTrackingEXT স্ট্রাকচার, অ্যাপ্লিকেশনকে imageTrackingDatabases-এ XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল দ্বারা উপস্থাপিত রেফারেন্স ইমেজ খুঁজে পেতে সাহায্য করে।

xrEnumerateSpatialCapabilitiesEXT-এর মাধ্যমে XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT গণনা করা না হলে, রানটাইমকে XR_ERROR_SPATIAL_CAPABILITY_UNSUPPORTED_EXT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialCapabilityConfigurationImageTrackingEXT ব্যবহার করার আগে XR_EXT_spatial_image_tracking এক্সটেনশন চালু করতেই হবে
  • type অবশ্যই XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_IMAGE_TRACKING_EXT হতে হবে
  • next অবশ্যই NULL বা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের সঠিক পয়েন্টার হতে হবে
  • capability অবশ্যই একটি সঠিক XrSpatialCapabilityEXT ভ্যালু হতে হবে
  • enabledComponents অবশ্যই enabledComponentCountটি সঠিক XrSpatialComponentTypeEXT মানের অ্যারের পয়েন্টার হতে হবে
  • imageTrackingDatabases অবশ্যই imageTrackingDatabaseCountটি সঠিক XrSpatialImageTrackingDatabaseEXT হ্যান্ডেলের অ্যারের পয়েন্টার হতে হবে
  • enabledComponentCount প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে
  • imageTrackingDatabaseCount প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে

স্পেশিয়াল রেফারেন্স ইমেজ

XrSpatialReferenceImagePlaneEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialReferenceImagePlaneEXT {
    uint32_t    bufferSize;
    uint8_t*    buffer;
    uint32_t    rowStride;
    uint32_t    pixelStride;
} XrSpatialReferenceImagePlaneEXT;

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

  • bufferSize হল buffer অ্যারের সাইজ।
  • buffer হল uint8_t ডেটার একটি অ্যারে যা প্লেন ডেটাকে উপস্থাপন করে।
  • rowStride হল পরপর পিক্সেল ডেটা সারির দুটি শুরুর অবস্থানের মধ্যে বাইট দূরত্ব।
  • pixelStride হল পরপর দুটি পিক্সেলের মধ্যে বাইট দূরত্ব।

রানটাইমকে rowStride এবং pixelStride প্যারামিটার দ্বারা প্রদত্ত প্যাটার্ন অনুযায়ী buffer অ্যাক্সেস করতেই হবে।

অ্যাপ্লিকেশনকে rowStride এবং pixelStride অবশ্যই সেট করতে হবে যাতে রানটাইম দ্বারা এই XrSpatialReferenceImagePlaneEXT-এর শুধুমাত্র অর্থপূর্ণ পিক্সেল এক্সট্র্যাক্ট করা হয়।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialReferenceImagePlaneEXT ব্যবহার করার আগে XR_EXT_spatial_image_tracking এক্সটেনশন অবশ্যই চালু করতে হবে
  • buffer অবশ্যই bufferSize uint8_t মানের অ্যারের পয়েন্টার হতে হবে
  • bufferSize প্যারামিটার অবশ্যই 0-এর থেকে বেশি হতে হবে

XrSpatialReferenceImageEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialReferenceImageEXT {
    XrStructureType                           type;
    const void*                               next;
    uint32_t                                  width;
    uint32_t                                  height;
    XrSpatialReferenceImageFormatEXT          format;
    uint32_t                                  planeCount;
    const XrSpatialReferenceImagePlaneEXT*    planes;
} XrSpatialReferenceImageEXT;

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

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • width হল রেফারেন্স ইমেজের পিক্সেল প্রস্থ।
  • height হল রেফারেন্স ইমেজের পিক্সেল উচ্চতা।
  • format হল একটি XrSpatialReferenceImageFormatEXT যা ছবির ফর্ম্যাটকে উপস্থাপন করে।
  • planeCount হল planes অ্যারেতে থাকা এলিমেন্টের সংখ্যা।
  • planes হল XrSpatialReferenceImagePlaneEXT স্ট্রাকচারের একটি অ্যারে যা ইমেজ ডেটার প্লেনকে উপস্থাপন করে।

অ্যাপ্লিকেশনটি এক বা একাধিক XrSpatialReferenceImageEXT স্ট্রাকচার তৈরি করতে পারে, যার প্রতিটি XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল তৈরি করার সময় XrSpatialImageTrackingDatabaseCreateInfoEXT :: spatialReferenceImages-এর মাধ্যমে xrCreateSpatialImageTrackingDatabaseAsyncEXT ফাংশনে পাস করার জন্য একটি একক ইনপুট রেফারেন্স ইমেজকে উপস্থাপন করে।

XrSpatialReferenceImagePlaneEXT :: buffer ডেটা অবশ্যই অ্যাপ্লিকেশন দ্বারা বাঁদিক থেকে ডানদিকে এবং উপর থেকে নিচে পিক্সেল অর্ডারে সরবরাহ করতে হবে।

অ্যাপ্লিকেশনটিকে XrSpatialReferenceImageEXT :: format-এর প্রতিটি কালার চ্যানেলের জন্য XrSpatialReferenceImageEXT :: planes অ্যারেতে XrSpatialReferenceImagePlaneEXT স্ট্রাকচার প্রদান করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

গ্যারেন্টিযুক্ত কম্পোনেন্ট

XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT-কে সাপোর্ট করে এমন রানটাইমকে অবশ্যই নিম্নলিখিত স্পেশিয়াল কম্পোনেন্টগুলি প্রদান করতে হবে, যা সেইসব ক্ষমতার মাধ্যমে আবিষ্কৃত সমস্ত এন্টিটির গ্যারান্টিযুক্ত কম্পোনেন্ট হিসেবে কাজ করবে এবং সেগুলিকে xrEnumerateSpatialCapabilityComponentTypesEXT-এ তালিকাভুক্ত করতে হবে:

  • XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT

ইমেজ 2D কম্পোনেন্ট

কোয়েরি ডেটার জন্য কম্পোনেন্ট লিস্ট স্ট্রাক্ট

XrSpatialComponentImage2DListEXT স্ট্রাকচারটি এইভাবে সংজ্ঞায়িত করা হয়েছে:

typedef struct XrSpatialComponentImage2DListEXT {
    XrStructureType             type;
    const void*                 next;
    uint32_t                    imageCount;
    XrSpatialImage2DDataEXT*    images;
} XrSpatialComponentImage2DListEXT;

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

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার।
  • imageCount হল images অ্যারেতে থাকা এলিমেন্টের সংখ্যা।
  • images হল XrSpatialImage2DDataEXT-এর একটি অ্যারে।

XrSpatialComponentImage2DListEXT যদি XrSpatialComponentDataQueryResultEXT :: next চেনে থাকে, কিন্তু XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT যদি XrSpatialComponentDataQueryConditionEXT :: componentTypes-এ অন্তর্ভুক্ত না থাকে, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_VALIDATION_FAILURE ফিরিয়ে দিতেই হবে।

imageCount যদি XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput-এর থেকে কম হয়, তাহলে রানটাইমকে xrQuerySpatialComponentDataEXT থেকে XR_ERROR_SIZE_INSUFFICIENT রিটার্ন করতেই হবে।

সঠিক ব্যবহার (অন্তর্নিহিত)

কম্পোনেন্ট ডেটা

XrSpatialImage2DDataEXT স্ট্রাকচার এইভাবে সংজ্ঞায়িত করা হয়:

typedef struct XrSpatialImage2DDataEXT {
    XrSpatialImageTrackingDatabaseEXT    imageTrackingDatabase;
    uint32_t                             referenceImageIndex;
} XrSpatialImage2DDataEXT;

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

  • imageTrackingDatabase হল XrSpatialImageTrackingDatabaseEXT যা ছবি শনাক্ত বা ট্র্যাক করেছে।
  • referenceImageIndex হল ইনডেক্স যা XrSpatialImageTrackingDatabaseCreateInfoEXT :: spatialReferenceImages ইনপুট রেফারেন্স ইমেজের অ্যারেতে ম্যাপ করে, যার সাহায্যে imageTrackingDatabase তৈরি করা হয়েছে।

আগে তৈরি করা কোন XrSpatialImageTrackingDatabaseEXT-এ এই XrSpatialImage2DDataEXT স্ট্রাকচারের রেফারেন্স ইমেজ আছে তা শনাক্ত করতে, অ্যাপ্লিকেশন imageTrackingDatabase ব্যবহার করতে পারে। সেই XrSpatialImageTrackingDatabaseEXT-এর জন্য, অ্যাপ্লিকেশন পারে referenceImageIndex ব্যবহার করতে, এই XrSpatialImage2DDataEXT স্ট্রাকচারের XrSpatialReferenceImageEXT শনাক্ত করতে, XrSpatialImageTrackingDatabaseCreateInfoEXT :: spatialReferenceImages অ্যারের ইনপুট অর্ডারের সাথে এটি ম্যাচ করে।

সব অ্যাক্টিভ ডেটাবেসের সেট দ্বারা নির্ধারিত রেফারেন্স ইমেজের সেটে ডুপ্লিকেট ইমেজ অন্তর্ভুক্ত করা উচিত নয়। ডুপ্লিকেট ছবি অন্তর্ভুক্ত করলে তা ডিসকভারি বা ট্র্যাকিং আচরণে বিরূপ প্রভাব ফেলতে পারে; অর্থাৎ, অসামঞ্জস্যপূর্ণ বা একাধিক ইন্ডেক্স রিটার্ন করা হতে পারে।

সঠিক ব্যবহার (অন্তর্নিহিত)

  • XrSpatialImage2DDataEXT ব্যবহার করার আগে XR_EXT_spatial_image_tracking এক্সটেনশন অবশ্যই চালু করতে হবে
  • imageTrackingDatabase অবশ্যই একটি সঠিক XrSpatialImageTrackingDatabaseEXT হ্যান্ডেল হতে হবে
কনফিগারেশন

কিছু ক্ষমতার জন্য XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT যদি XrSpatialCapabilityComponentTypesEXT :: componentTypes-এ গণনা করা হয়, তাহলে অ্যাপ্লিকেশনটি XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents তালিকায় enum মান অন্তর্ভুক্ত করে এটি চালু করতে পারে। XrSpatialCapabilityConfigurationBaseHeaderEXT-এর পরবর্তী চেনে অন্তর্ভুক্ত করার জন্য এই কম্পোনেন্টের কোনও বিশেষ কনফিগারেশনের প্রয়োজন নেই।

বাউন্ডেড 2D কম্পোনেন্ট

বাউন্ডেড 2D কম্পোনেন্ট, স্পেশাল ইমেজের কেন্দ্র এবং এক্সটেন্ট প্রদান করে, যা এটি যে এন্টিটিতে আছে তার দ্বারা উপস্থাপিত হয়। বাউন্ডেড 2D কম্পোনেন্ট সম্পর্কে আরও জানতে বাউন্ডেড 2D দেখুন।

কোডের উদাহরণ

স্পেশিয়াল ইমেজ ও কোয়েরি কম্পোনেন্ট ডেটা খুঁজে দেখা

নিচের উদাহরণ কোডটি দেখায় যে কীভাবে ইমেজ ট্র্যাকিং ক্ষমতার জন্য স্পেশিয়াল এন্টিটি আবিষ্কার করা যায় এবং এর কম্পোনেন্ট ডেটা কোয়েরি করা যায়।

XrInstance instance; // Previously initialized
XrSystemId systemId; // Previously initialized
XrSession session; // Previously initialized

uint32_t capabilityCountOutput = 0;
CHK_XR(xrEnumerateSpatialCapabilitiesEXT(instance, systemId, 0, &capabilityCountOutput, nullptr));
std::vector<XrSpatialCapabilityEXT> capabilities(capabilityCountOutput);
CHK_XR(xrEnumerateSpatialCapabilitiesEXT(instance, systemId, capabilities.size(), &capabilityCountOutput, capabilities.data()));

if (std::find(capabilities.begin(), capabilities.end(), XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT) == capabilities.end()) {
  // Image tracking not supported
}

XrSpatialCapabilityComponentTypesEXT imageTrackingComponents{XR_TYPE_SPATIAL_CAPABILITY_COMPONENT_TYPES_EXT};
CHK_XR(xrEnumerateSpatialCapabilityComponentTypesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, &imageTrackingComponents));
std::vector<XrSpatialComponentTypeEXT> imageTrackingCapabilityComponents(imageTrackingComponents.componentTypeCountOutput);
imageTrackingComponents.componentTypes = imageTrackingCapabilityComponents.data();
CHK_XR(xrEnumerateSpatialCapabilityComponentTypesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, &imageTrackingComponents));

if (std::find(imageTrackingCapabilityComponents.begin(), imageTrackingCapabilityComponents.end(), XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT) == imageTrackingCapabilityComponents.end()) {
  // The image2d component is not supported
}

uint32_t capabilityFeatureCountOutput = 0;
CHK_XR(xrEnumerateSpatialCapabilityFeaturesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, 0, &capabilityFeatureCountOutput, nullptr));
std::vector<XrSpatialCapabilityFeatureEXT> capabilityFeatures(capabilityFeatureCountOutput);
CHK_XR(xrEnumerateSpatialCapabilityFeaturesEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, capabilityFeatures.size(), &capabilityFeatureCountOutput, capabilityFeatures.data()));

// Helper function to query optional feature support
const auto supportsFeature = [&capabilityFeatures](XrSpatialCapabilityFeatureEXT feature) {
  return std::find(capabilityFeatures.begin(), capabilityFeatures.end(), feature) != capabilityFeatures.end();
};

// supported state for optional features
const bool supportsAutomaticScaleEstimation = supportsFeature(XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT);
const bool supportsStaticImages = supportsFeature(XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT);
const bool supportsFixedSizeImages = supportsFeature(XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT);

uint32_t formatCountOutput = 0;
CHK_XR(xrEnumerateSpatialReferenceImageFormatsEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, 0, &formatCountOutput, nullptr));
std::vector<XrSpatialReferenceImageFormatEXT> formats(formatCountOutput);
CHK_XR(xrEnumerateSpatialReferenceImageFormatsEXT(instance, systemId, XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT, formats.size(), &formatCountOutput, formats.data()));

if (std::find(formats.begin(), formats.end(), XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGBA_8888_EXT) == formats.end()) {
  // The desired format is not supported
}

// Helper function to wait for XrFutureEXT completion
auto waitUntilReady = [&](XrFutureEXT future) {
  XrFuturePollInfoEXT pollInfo{XR_TYPE_FUTURE_POLL_INFO_EXT};
  XrFuturePollResultEXT pollResult{XR_TYPE_FUTURE_POLL_RESULT_EXT};
  pollInfo.future = future;
  do {
    // sleep(1);
    CHK_XR(xrPollFutureEXT(instance, &pollInfo, &pollResult));
  } while (pollResult.state != XR_FUTURE_STATE_READY_EXT);
};

// Data/metadata about reference images (identifiers, 3D models, trigger functions, etc.)
std::vector<std::string> referenceImageIdentifiers;

XrSpatialImageTrackingDatabaseEXT imageTrackingDatabase{};
{
  uint32_t imgSize; // preloaded interleaved RGBA buffer size
  uint8_t* img; // preloaded interleaved RGBA buffer data

  // interleaved RGBA buffer memory layout and buffer positions

  // first row of pixels
  // img[0] | img[1] | img[2] | img[3] | img[0]+pStride | img[1]+pStride | ...
  //  R0    |   G0   |   B0   |   A0   |       R1       |       G1       | ...

  // second row of pixels
  // img[0]+rStride | img[1]+rStride | img[2]+rStride | img[3]+rStride | img[0]+rStride+pStride | ...
  //      R640      |      G640      |      B640      |      A640      |          R641          | ...

  XrSpatialReferenceImagePlaneEXT spatialReferenceImagePlanes[4];

  for (int i = 0; i < 4; ++i) { // for each plane (0=R, 1=G, 2=B, 3=A)
    spatialReferenceImagePlanes[i].buffer = img + i; // set each plane buffer pointer to the first pixel of the plane
    spatialReferenceImagePlanes[i].bufferSize = imgSize - i; // adjust remeinaing buffer size according to offset applied
    spatialReferenceImagePlanes[i].rowStride = 640 * 4; // set byte offset to start of next row for this plane
    spatialReferenceImagePlanes[i].pixelStride = 4; // set byte offset to next pixel for this plane
  }

  XrSpatialReferenceImageEXT spatialReferenceImage{XR_TYPE_SPATIAL_REFERENCE_IMAGE_EXT};
  spatialReferenceImage.width = 640;
  spatialReferenceImage.height = 480;
  spatialReferenceImage.format = XR_SPATIAL_REFERENCE_IMAGE_FORMAT_RGBA_8888_EXT;
  spatialReferenceImage.planeCount = 4;
  spatialReferenceImage.planes = spatialReferenceImagePlanes;

  referenceImageIdentifiers.emplace_back("MyReferenceImage");

  // Helper function to append to the next chain
  XrBaseOutStructure* appendTo = reinterpret_cast<XrBaseOutStructure*>(&spatialReferenceImage);
  const auto appendToNextChain = [&appendTo](XrBaseOutStructure* toAppend) {
    appendTo->next = toAppend;
    appendTo = toAppend;
  };

  XrSpatialImageSizeEXT imageSize{XR_TYPE_SPATIAL_IMAGE_SIZE_EXT};
  imageSize.physicalWidth = 0.1f;

  if (!supportsAutomaticScaleEstimation) {
    if (supportsFixedSizeImages) {
      appendToNextChain(reinterpret_cast<XrBaseOutStructure*>(&imageSize));
    }
  }

  XrSpatialImageStaticOptimizationEXT imageStaticOptimization{XR_TYPE_SPATIAL_IMAGE_STATIC_OPTIMIZATION_EXT};
  imageStaticOptimization.optimizeForStaticImage = XR_TRUE;

  if (supportsStaticImages) {
    appendToNextChain(reinterpret_cast<XrBaseOutStructure*>(&imageStaticOptimization));
  }

  XrSpatialImageTrackingDatabaseCreateInfoEXT spatialImageTrackingDatabaseCreateInfo{XR_TYPE_SPATIAL_IMAGE_TRACKING_DATABASE_CREATE_INFO_EXT};
  spatialImageTrackingDatabaseCreateInfo.spatialReferenceImages = &spatialReferenceImage;
  spatialImageTrackingDatabaseCreateInfo.spatialReferenceImageCount = 1;

  XrFutureEXT createImageTrackingDatabaseFuture = XR_NULL_FUTURE_EXT;
  CHK_XR(xrCreateSpatialImageTrackingDatabaseAsyncEXT(session, &spatialImageTrackingDatabaseCreateInfo, &createImageTrackingDatabaseFuture));

  waitUntilReady(createImageTrackingDatabaseFuture);

  XrCreateSpatialImageTrackingDatabaseCompletionEXT imageTrackingCompletion{XR_TYPE_CREATE_SPATIAL_IMAGE_TRACKING_DATABASE_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialImageTrackingDatabaseCompleteEXT(session, createImageTrackingDatabaseFuture, &imageTrackingCompletion));
  if (imageTrackingCompletion.futureResult != XR_SUCCESS) {
    // Error, image tracking database creation failed
  }

  imageTrackingDatabase = imageTrackingCompletion.database;
}

XrSpatialContextEXT spatialContext{};
{
  const std::array<XrSpatialComponentTypeEXT, 2> enabledComponents = {
    XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT,
    XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
  };

  // Configure the image tracking capability for the spatial context
  XrSpatialCapabilityConfigurationImageTrackingEXT imageTrackingCapabilityConfig{XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_IMAGE_TRACKING_EXT};
  imageTrackingCapabilityConfig.capability = XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT;
  imageTrackingCapabilityConfig.enabledComponentCount = enabledComponents.size();
  imageTrackingCapabilityConfig.enabledComponents = enabledComponents.data();
  imageTrackingCapabilityConfig.imageTrackingDatabaseCount = 1;
  imageTrackingCapabilityConfig.imageTrackingDatabases = &imageTrackingDatabase;

  std::vector<XrSpatialCapabilityConfigurationBaseHeaderEXT*> capabilityConfigs;
  capabilityConfigs.push_back(reinterpret_cast<XrSpatialCapabilityConfigurationBaseHeaderEXT*>(&imageTrackingCapabilityConfig));

  XrSpatialContextCreateInfoEXT spatialContextCreateInfo{XR_TYPE_SPATIAL_CONTEXT_CREATE_INFO_EXT};
  spatialContextCreateInfo.capabilityConfigCount = capabilityConfigs.size();
  spatialContextCreateInfo.capabilityConfigs = capabilityConfigs.data();

  XrFutureEXT createContextFuture = XR_NULL_FUTURE_EXT;
  CHK_XR(xrCreateSpatialContextAsyncEXT(session, &spatialContextCreateInfo, &createContextFuture));

  waitUntilReady(createContextFuture);

  XrCreateSpatialContextCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_CONTEXT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialContextCompleteEXT(session, createContextFuture, &completion));
  if (completion.futureResult != XR_SUCCESS) {
    // Error, spatial context creation failed
  }

  spatialContext = completion.spatialContext;
}

auto discoverSpatialEntities = [&](XrSpatialContextEXT spatialContext, XrTime time) {
  // We want to look for entities that have the following components
  std::array<XrSpatialComponentTypeEXT, 2> snapshotComponents {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT};

  XrSpatialDiscoverySnapshotCreateInfoEXT snapshotCreateInfo{XR_TYPE_SPATIAL_DISCOVERY_SNAPSHOT_CREATE_INFO_EXT};
  snapshotCreateInfo.componentTypeCount = snapshotComponents.size();
  snapshotCreateInfo.componentTypes = snapshotComponents.data();
  XrFutureEXT discoveryFuture = XR_NULL_FUTURE_EXT;
  CHK_XR(xrCreateSpatialDiscoverySnapshotAsyncEXT(spatialContext, &snapshotCreateInfo, &discoveryFuture));

  waitUntilReady(discoveryFuture);

  XrCreateSpatialDiscoverySnapshotCompletionInfoEXT completionInfo{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_INFO_EXT};
  completionInfo.baseSpace = localSpace;
  completionInfo.time = time;
  completionInfo.future = discoveryFuture;

  XrCreateSpatialDiscoverySnapshotCompletionEXT completion{XR_TYPE_CREATE_SPATIAL_DISCOVERY_SNAPSHOT_COMPLETION_EXT};
  CHK_XR(xrCreateSpatialDiscoverySnapshotCompleteEXT(spatialContext, &completionInfo, &completion));
  if (completion.futureResult == XR_SUCCESS) {
    // Query for the bounded2d component data
    XrSpatialComponentTypeEXT componentsToQuery[] = {XR_SPATIAL_COMPONENT_TYPE_BOUNDED_2D_EXT, XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT};
    XrSpatialComponentDataQueryConditionEXT queryCond{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_CONDITION_EXT};
    queryCond.componentTypes = componentsToQuery;

    XrSpatialComponentDataQueryResultEXT queryResult{XR_TYPE_SPATIAL_COMPONENT_DATA_QUERY_RESULT_EXT};
    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    std::vector<XrSpatialEntityIdEXT> entityIds(queryResult.entityIdCountOutput);
    std::vector<XrSpatialEntityTrackingStateEXT> entityStates(queryResult.entityStateCountOutput);
    queryResult.entityIdCapacityInput = entityIds.size();
    queryResult.entityIds = entityIds.data();
    queryResult.entityStateCapacityInput = entityStates.size();
    queryResult.entityStates = entityStates.data();

    std::vector<XrSpatialBounded2DDataEXT> bounded2d(queryResult.entityIdCountOutput);
    XrSpatialComponentBounded2DListEXT boundsList{XR_TYPE_SPATIAL_COMPONENT_BOUNDED_2D_LIST_EXT};
    boundsList.boundCount = bounded2d.size();
    boundsList.bounds = bounded2d.data();
    queryResult.next = &boundsList;

    std::vector<XrSpatialImage2DDataEXT> image2d(queryResult.entityIdCountOutput);
    XrSpatialComponentImage2DListEXT imagesList{XR_TYPE_SPATIAL_COMPONENT_IMAGE_2D_LIST_EXT};
    imagesList.imageCount = image2d.size();
    imagesList.images = image2d.data();
    queryResult.next = &imagesList;

    CHK_XR(xrQuerySpatialComponentDataEXT(completion.snapshot, &queryCond, &queryResult));

    for (int32_t i = 0; i < queryResult.entityIdCountOutput; ++i) {
      if (entityStates[i] == XR_SPATIAL_ENTITY_TRACKING_STATE_TRACKING_EXT) {
        const XrSpatialImage2DDataEXT& currentImage2d = image2d[i];
        const std::string& currentReferenceImageIdentifier = referenceImageIdentifiers[currentImage2d.referenceImageIndex];
        std::cout << currentReferenceImageIdentifier << std::endl; // Outputs the "MyReferenceImage" string the app defined previously; could be any other assocatied data or action.

        // Access bounded2d[i] for image bounds
      }
    }

    CHK_XR(xrDestroySpatialSnapshotEXT(completion.snapshot));
  }
};

while (1) {
  // For every frame in frame loop

  XrFrameState frameState;  // Previously returned from xrWaitFrame
  const XrTime time = frameState.predictedDisplayTime;

  // Poll for the XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT event
  XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
  XrResult result = xrPollEvent(instance, &event);
  if (result == XR_SUCCESS) {
      switch (event.type) {
          case XR_TYPE_EVENT_DATA_SPATIAL_DISCOVERY_RECOMMENDED_EXT: {
              const XrEventDataSpatialDiscoveryRecommendedEXT& eventdata = *reinterpret_cast<XrEventDataSpatialDiscoveryRecommendedEXT*>(&event);
              // Discover spatial entities for the context that we received the "discovery
              // recommended" event for
              discoverSpatialEntities(eventdata.spatialContext, time);
              break;
          }
      }
  }

  // Finish frame loop
}

CHK_XR(xrDestroySpatialContextEXT(spatialContext));

// Unload spatial image tracking resources internally
CHK_XR(xrDestroySpatialImageTrackingDatabaseEXT(imageTrackingDatabase));

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

নতুন কমান্ড

নতুন স্ট্রাকচার

নতুন Enum

নতুন Enum কনস্ট্যান্ট

  • XR_EXT_SPATIAL_IMAGE_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_image_tracking_SPEC_VERSION
  • XrObjectType এক্সটেন্ড করা হচ্ছে :

    • XR_OBJECT_TYPE_SPATIAL_IMAGE_TRACKING_DATABASE_EXT
  • XrResult এক্সটেন্ড করা হচ্ছে :

    • XR_ERROR_SPATIAL_IMAGE_FORMAT_UNSUPPORTED_EXT
    • XR_ERROR_SPATIAL_IMAGE_INVALID_EXT
    • XR_ERROR_SPATIAL_IMAGE_SIZE_MISSING_EXT
  • XrSpatialCapabilityEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_CAPABILITY_IMAGE_TRACKING_EXT
  • XrSpatialCapabilityFeatureEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_AUTOMATIC_SIZE_IMAGES_EXT
    • XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_FIXED_SIZE_IMAGES_EXT
    • XR_SPATIAL_CAPABILITY_FEATURE_IMAGE_TRACKING_STATIC_IMAGES_EXT
  • XrSpatialComponentTypeEXT এক্সটেন্ড করা হচ্ছে :

    • XR_SPATIAL_COMPONENT_TYPE_IMAGE_2D_EXT
  • XrStructureType এক্সটেন্ড করা হচ্ছে :

    • XR_TYPE_CREATE_SPATIAL_IMAGE_TRACKING_DATABASE_COMPLETION_EXT
    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_IMAGE_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_IMAGE_2D_LIST_EXT
    • XR_TYPE_SPATIAL_IMAGE_SIZE_EXT
    • XR_TYPE_SPATIAL_IMAGE_STATIC_OPTIMIZATION_EXT
    • XR_TYPE_SPATIAL_IMAGE_TRACKING_DATABASE_CREATE_INFO_EXT
    • XR_TYPE_SPATIAL_REFERENCE_IMAGE_EXT

ইস্যু

ভার্সনের ইতিহাস

  • রিভিশন ১, ২২-০৪-২০২৫ (ড্যানিয়েল গুটেনবার্গ, Qualcomm)

    • প্রাথমিক এক্সটেনশনের বিবরণ