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

XR_ANDROID_recommended_settings

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

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

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

455

সংশোধন

1

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

অনুমোদিত নয়

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

OpenXR 1.0

শেষবার পরিবর্তন করার তারিখ

2026-03-16

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

স্পেন্সার কুইন, Google
জ্যারেড ফাইন্ডার, Google
কেভিন মৌল, Google
নিহাভ জৈন, Google
লেভানা চেন, Google
অ্যালভিন শি, Google
সালার খান, Google

এক নজরে

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

স্ট্রাক্ট ও এনাম

XrInputModalityFlagsANDROID বিট বিভিন্ন ইনপুট মোডালিটি শনাক্ত করে যা হয়ত ব্যবহার করা হচ্ছে।

typedef XrFlags64 XrInputModalityFlagsANDROID;

XrInputModalityFlagsANDROID-এর জন্য বৈধ বিট XrInputModalityFlagBitsANDROID দ্বারা সংজ্ঞায়িত করা হয়, যা এইভাবে নির্দিষ্ট করা হয়েছে:

// Flag bits for XrInputModalityFlagsANDROID
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HEAD_BIT_ANDROID = 0x00000001;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID = 0x00000002;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HANDS_BIT_ANDROID = 0x00000004;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_MOUSE_BIT_ANDROID = 0x00000008;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID = 0x00000010;

ফ্ল্যাগ সম্পর্কিত বিবরণ

  • XR_INPUT_MODALITY_HEAD_BIT_ANDROID — ইনপুট মোডালিটি নির্দেশ করে যা হেড ট্র্যাকিং ব্যবহার করছে।
  • XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID — ইনপুট মোডালিটি নির্দেশ করে যা যেকোনও XR কন্ট্রোলার ইনপুট ব্যবহার করছে।
  • XR_INPUT_MODALITY_HANDS_BIT_ANDROID — হ্যান্ড ট্র্যাকিং ব্যবহার করছে এমন ইনপুট মোডালিটি নির্দেশ করে।
  • XR_INPUT_MODALITY_MOUSE_BIT_ANDROID — এমন একটি ইনপুট মোডালিটি নির্দেশ করে যা মাউস ইনপুট ব্যবহার করছে।
  • XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID — আই ট্র্যাকিং ও হ্যান্ড ট্র্যাকিং একত্রিত করে এমন ইনপুট মোডালিটি নির্দেশ করে।

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

typedef struct XrRecommendedSettingsANDROID {
    XrStructureType                type;
    void*                          next;
    XrEnvironmentBlendMode         blendMode;
    float                          passthroughOpacity;
    XrInputModalityFlagsANDROID    activeInputModalities;
} XrRecommendedSettingsANDROID;

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

  • type হল এই স্ট্রাকচারের XrStructureType।
  • next হল NULL অথবা স্ট্রাকচার চেনের পরবর্তী স্ট্রাকচারের পয়েন্টার। কোর OpenXR বা এই এক্সটেনশনে এই ধরনের কোনও স্ট্রাকচার সংজ্ঞায়িত করা নেই।
  • blendMode হল একটি XrEnvironmentBlendMode যা অ্যাপ্লিকেশন লঞ্চ করার ঠিক আগে ডিফল্ট এনভায়রনমেন্টের ব্লেন্ড মোড নির্দেশ করে।
  • passthroughOpacity হল একটি float যা অ্যাপ্লিকেশন লঞ্চ করার ঠিক আগে ডিফল্ট এনভায়রনমেন্টের পাসথ্রু অস্বচ্ছতা নির্দেশ করে। OST ডিভাইসের জন্য রানটাইমকে অবশ্যই এই ভ্যালু (১.০ - dimming_value) হিসেবে সেট করতে হবে।
  • activeInputModalities হল XrInputModalityFlagsANDROID-এর বিটমাস্ক যা অ্যাপ্লিকেশন লঞ্চ করার ঠিক আগে ডিফল্ট এনভায়রনমেন্টে ব্যবহার করা ইনপুট মোডালিটি নির্দেশ করে।

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

কাজ করে এমন এনভায়রনমেন্টের স্ট্যাটাস গণনা করা হচ্ছে

xrGetSystemProperties কল করার সময় xrEnumerateEnvironmentBlendModes এবং XrSystemInputModalityPropertiesANDROID স্ট্রাকচার সহ XrSystemProperties এক্সটেন্ড করার মাধ্যমে, কোনও অ্যাপ্লিকেশন নির্ধারণ করতে পারে যে সিস্টেমে কোন ব্লেন্ড মোড এবং ইনপুট মডালিটি স্টেট কাজ করে।

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

typedef struct XrSystemInputModalityPropertiesANDROID {
    XrStructureType                type;
    void*                          next;
    XrInputModalityFlagsANDROID    supportedInputModalities;
} XrSystemInputModalityPropertiesANDROID;

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

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

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

XrResult xrGetRecommendedSettingsANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    XrRecommendedSettingsANDROID*               output);

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

  • instance হল একটি XrInstance হ্যান্ডেল যা আগে xrCreateInstance-এর মাধ্যমে তৈরি করা হয়েছে।
  • systemId হল একটি XrSystemId যা আগে xrGetSystem থেকে আনা হয়েছে।
  • output হল XrRecommendedSettingsANDROID স্ট্রাক্টের একটি পয়েন্টার যা ডিফল্ট এনভায়রনমেন্ট স্টেট সহ আউটপুট করা হয়।

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

  • xrGetRecommendedSettingsANDROID কল করার আগে XR_ANDROID_recommended_settings এক্সটেনশন অবশ্যই চালু করতে হবে
  • instance অবশ্যই একটি সঠিক XrInstance হ্যান্ডেল হতে হবে
  • output অবশ্যই XrRecommendedSettingsANDROID স্ট্রাকচারের পয়েন্টার হতে হবে

রিটার্ন কোড

হয়ে গেছে

  • XR_SUCCESS

ব্যর্থতা

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SYSTEM_INVALID

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

XrInstance instance;  // Created at app startup
XrSystemId systemId;  // previously initialized from xrGetSystem
XrViewConfigurationType viewType;  // previously initialized to select desired view configuration

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetRecommendedSettingsANDROID xrGetRecommendedSettingsANDROID; // previously initialized

XrSystemInputModalityPropertiesANDROID props = {
  .type = XR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
};
XrSystemProperties base = {
  .type = XR_TYPE_SYSTEM_PROPERTIES,
  .next = &props
};
CHK_XR(xrGetSystemProperties(instance, systemId, &base));

uint32_t blendModeCount = 0;
CHK_XR(
 xrEnumerateEnvironmentBlendModes(instance, systemId, viewType, 0, &blendModeCount, nullptr));
std::vector<XrEnvironmentBlendMode> supportedBlendModes(blendModeCount);
CHK_XR(
  xrEnumerateEnvironmentBlendModes(
    instance, systemId, viewType, blendModeCount, &blendModeCount, supportedBlendModes.data()));

XrRecommendedSettingsANDROID output = {
  .type = XR_TYPE_RECOMMENDED_SETTINGS_ANDROID
};

XrResult result = xrGetRecommendedSettingsANDROID(instance, systemId, &output);

if (result == XR_SUCCESS) {
  // We now know the current state of the default environment as recommended settings

  bool correctBlendMode = false;
  for(XrEnvironmentBlendMode blendMode : supportedBlendModes) {
    if (blendMode == output.blendMode) {
      correctBlendMode = true;
      break;
    }
  }
  assert(correctBlendMode);
  assert((~props.supportedInputModalities & output.activeInputModalities) == 0);
}

নতুন কমান্ড

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

নতুন Enum

নতুন বিটমাস্ক

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

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

    • XR_TYPE_RECOMMENDED_SETTINGS_ANDROID
    • XR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID

সমস্যা

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

  • রিভিশন ৩, ১৬-০৩-২০২৬ (সালার খান)

    • পাবলিক হিসেবে প্রোমোট করা হয়েছে, ইনপুট মডালিটি ফ্ল্যাগ বিট তৈরি করা হয়েছে এবং এক্সটেনশনের নাম পরিবর্তন করে XR_ANDROID_recommended_settings করা হয়েছে।
  • সংশোধন ২, ২৮-০৩-২০২৫ (সালার খান)

    • ANDROIDX-এ পরিবর্তন করুন এবং passthroughOpacity অন্তর্ভুক্ত করুন।
  • রিভিশন ১, ১৮-০২-২০২৫ (সালার খান)

    • প্রাথমিক ভার্সন।