নাম স্ট্রিং

XR_ANDROID_recommended_settings

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

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

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

৪৫৫

সংশোধন

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

অনুমোদিত নয়

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

ওপেনএক্সআর ১.০

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

২০২৬-০৩-১৬

অবদানকারীরা

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

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

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

স্ট্রাক্ট এবং এনাম

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 ডিভাইসগুলোর জন্য রানটাইমকে অবশ্যই এই মানটি (1.0 - dimming_value)-তে সেট করতে হবে।
  • activeInputModalities হলো XrInputModalityFlagsANDROID- এর একটি বিটমাস্ক, যা অ্যাপ্লিকেশন চালু হওয়ার ঠিক আগে ডিফল্ট পরিবেশে ব্যবহৃত ইনপুট মোডালিটিগুলো নির্দেশ করে।

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

সমর্থিত পরিবেশের অবস্থা গণনা করা

একটি অ্যাপ্লিকেশন xrEnumerateEnvironmentBlendModes ব্যবহার করে এবং xrGetSystemProperties কল করার সময় 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 হলো xrGetSystem থেকে পূর্বে আনা একটি XrSystemId
  • output হলো XrRecommendedSettingsANDROID struct-এর একটি পয়েন্টার, যা ডিফল্ট এনভায়রনমেন্ট স্টেটের সাথে আউটপুট করা হয়।

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

  • 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);
}

নতুন কমান্ড

নতুন কাঠামো

নতুন এনাম

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

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

  • 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 অন্তর্ভুক্ত করা হয়েছে।
  • সংশোধন ১, ২০২৫-০২-১৮ (সালার খান)

    • প্রাথমিক সংস্করণ।