Name String

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_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 है. इससे ऐप्लिकेशन लॉन्च होने से ठीक पहले, डिफ़ॉल्ट एनवायरमेंट के पासथ्रू की ओपैसिटी का पता चलता है. ओएसटी डिवाइसों के लिए, रनटाइम को यह वैल्यू (1.0 - 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

Failure

  • 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

समस्याएं

वर्शन इतिहास

  • तीसरा संशोधन, 16-03-2026 (सालार खान)

    • इसे सार्वजनिक किया गया, इनपुट मोडैलिटी को फ़्लैग बिट बनाया गया, और एक्सटेंशन का नाम बदलकर XR_ANDROID_recommended_settings किया गया.
  • दूसरा बदलाव, 28-03-2025 (सालार खान)

    • ANDROIDX में बदला गया और passthroughOpacity को शामिल किया गया.
  • संशोधन 1, 18-02-2025 (सालार खान)

    • शुरुआती वर्शन.