XR_ANDROID_global_passthrough_dimming

Name String

XR_ANDROID_global_passthrough_dimming

एक्सटेंशन का टाइप

इंस्टेंस एक्सटेंशन

रजिस्टर किया गया एक्सटेंशन नंबर

797

बदलाव

1

पुष्टि की स्थिति

मंज़ूरी नहीं मिली

एक्सटेंशन और वर्शन डिपेंडेंसी

OpenXR 1.0

पिछली बार बदलाव किए जाने की तारीख

2026-03-10

आईपी स्टेटस

बौद्धिक संपत्ति से जुड़े किसी दावे की जानकारी नहीं है.

योगदान देने वाले

ब्रायन चेन, Google
काइल चेन, Google
निहाव जैन, Google
स्पेंसर क्विन, Google

खास जानकारी

ऑप्टिकल सी-थ्रू डिवाइसों के लॉन्च होने के बाद, यह ज़रूरी है कि ऐप्लिकेशन को पासथ्रू की रोशनी को अडजस्ट करने की अनुमति दी जाए. इससे उपयोगकर्ता को ऐप्लिकेशन के कॉन्टेक्स्ट के साथ बेहतर ब्लेंडिंग मिलती है. साथ ही, सुरक्षा की वजहों से सिस्टम को पासथ्रू की रोशनी को कम करने की अनुमति दी जाए.

यह एक्सटेंशन, ऐप्लिकेशन के लिए दो फ़ंक्शन उपलब्ध कराता है. इनकी मदद से, मौजूदा डिमिंग लेवल को सेट किया जा सकता है और उसे देखा जा सकता है. साथ ही, डिमिंग लेवल बदलने पर ब्रॉडकास्ट करने के लिए एक इवेंट भी उपलब्ध कराता है.

सिस्टम की क्षमता की जांच करना

XrSystemGlobalDimmingPropertiesANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrSystemGlobalDimmingPropertiesANDROID {
    XrStructureType    type;
    void*              next;
    XrBool32           supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • supportsGlobalDimming एक XrBool32 है. इससे पता चलता है कि मौजूदा सिस्टम, ग्लोबल डिमिंग के साथ काम करता है या नहीं.

कोई ऐप्लिकेशन यह जांच कर सकता है कि सिस्टम में ग्लोबल डिमिंग की सुविधा काम करती है या नहीं. इसके लिए, xrGetSystemProperties को कॉल करते समय, XrSystemGlobalDimmingPropertiesANDROID स्ट्रक्चर को XrSystemProperties से जोड़ना होगा.

अगर रनटाइम, supportsGlobalDimming के लिए XR_FALSE दिखाता है, तो xrGetGlobalDimmingLevelANDROID को कॉल करने पर, रनटाइम को XR_ERROR_FEATURE_UNSUPPORTED दिखाना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

ग्लोबल डिमिंग के लिए उपलब्ध लेवल की सूची बनाएं

xrEnumerateSupportedGlobalDimmingLevelsANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

XrResult xrEnumerateSupportedGlobalDimmingLevelsANDROID(
    XrInstance                                  instance,
    XrSystemId                                  systemId,
    uint32_t                                    supportedGlobalDimmingLevelCapacityInput,
    uint32_t*                                   supportedGlobalDimmingLevelCountOutput,
    float*                                      supportedGlobalDimmingLevels);

सदस्यों की जानकारी

  • instance वह इंस्टेंस है जिससे systemId को वापस लाया गया था.
  • systemId वह XrSystemId है जिसके लिए, इस्तेमाल किए जा सकने वाले लेवल की सूची बनाई जाएगी.
  • supportedGlobalDimmingLevelCapacityInput, supportedGlobalDimmingLevels कलेक्शन की क्षमता है. इसके अलावा, ज़रूरी क्षमता को वापस पाने के अनुरोध को दिखाने के लिए, 0 का इस्तेमाल किया जाता है.
  • supportedGlobalDimmingLevelCountOutput, लिखे गए supportedGlobalDimmingLevels की संख्या का पॉइंटर है या supportedGlobalDimmingLevelCapacityInput के कम होने पर, ज़रूरी क्षमता का पॉइंटर है.
  • supportedGlobalDimmingLevels, काम करने वाले लेवल के कलेक्शन का पॉइंटर है. हालांकि, अगर supportedGlobalDimmingLevelCapacityInput की वैल्यू 0 है, तो यह NULL हो सकता है.

अगर supportedGlobalDimmingLevelCountOutput की वैल्यू 0 है, तो 0.0 से 1.0 के बीच के सभी ग्लोबल डिमिंग लेवल काम करेंगे.

xrEnumerateSupportedGlobalDimmingLevelsANDROID, XrSystemId के साथ काम करने वाले ग्लोबल डिमिंग लेवल की गिनती करता है. XrInstance के लाइफ़टाइम के दौरान, इसके साथ काम करने वाले लेवल नहीं बदलने चाहिए. लेवल की सूची को बढ़ते क्रम में ज़रूर लगाया जाना चाहिए.

दिए गए systemId और instance की लाइफ़टाइम के लिए, रनटाइम को इस सूची से हमेशा एक जैसे बफ़र कॉन्टेंट को दिखाना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

  • xrEnumerateSupportedGlobalDimmingLevelsANDROID को कॉल करने से पहले, XR_ANDROID_global_passthrough_dimming एक्सटेंशन चालू होना ज़रूरी है
  • instance एक मान्य XrInstance हैंडल होना ज़रूरी है
  • supportedGlobalDimmingLevelCountOutput को uint32_t वैल्यू का पॉइंटर होना चाहिए
  • अगर supportedGlobalDimmingLevelCapacityInput, 0 नहीं है, तो supportedGlobalDimmingLevels को supportedGlobalDimmingLevelCapacityInput float वैल्यू के कलेक्शन का पॉइंटर होना चाहिए

रिटर्न कोड

सफलता

  • XR_SUCCESS

Failure

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

ग्लोबल डिमिंग लेवल को कॉन्फ़िगर करना

XrGlobalDimmingFrameEndInfoANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrGlobalDimmingFrameEndInfoANDROID {
    XrStructureType    type;
    const void*        next;
    float              globalDimmingLevel;
} XrGlobalDimmingFrameEndInfoANDROID;

पैरामीटर की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • globalDimmingLevel, 0.0 (पारदर्शी) और 1.0 (अपारदर्शी) के बीच की वैल्यू है. रनटाइम इस वैल्यू को, ग्लोबल डिमिंग के सबसे नज़दीकी लेवल पर मैप कर सकता है. ऐप्लिकेशन इस वैल्यू को -1.0 पर सेट कर सकता है, ताकि यह पता चल सके कि डिमिंग का मौजूदा लेवल ही पसंदीदा है.

globalDimmingLevel वैल्यू से पता चलता है कि कितनी रोशनी ब्लॉक की जा रही है. इसमें 0.0 वैल्यू का मतलब है कि 0% रोशनी ब्लॉक की जा रही है और 1.0 वैल्यू का मतलब है कि 100% रोशनी ब्लॉक की जा रही है. ब्लॉक की गई रोशनी के प्रतिशत को आम तौर पर इस तरह दिखाया जा सकता है:

100% - Light Transmittance%

ISO 8980-3:2022 के मुताबिक, लाइट ट्रांसमिटेंस के प्रतिशत को, विज़िबल लाइट (380 एनएम से 780 एनएम) की वेवलेंथ पर ट्रांसमिट किए गए रेडिएंट फ़्लक्स और इंसिडेंट रेडिएंट फ़्लक्स के अनुपात के तौर पर मापा जा सकता है.

XrGlobalDimmingFrameEndInfoANDROID एक स्ट्रक्चर है. इसका इस्तेमाल करके, कोई ऐप्लिकेशन XrFrameEndInfo में चेन कर सकता है, ताकि ग्लोबल डिमिंग के पसंदीदा लेवल का अनुरोध किया जा सके.

अगर अनुरोध किया गया डिमिंग लेवल, मौजूदा डिमिंग लेवल से अलग है, तो रनटाइम को अनुरोध किए गए डिमिंग लेवल का पालन करना होगा.

रनटाइम के पास, ग्लोबल डिमिंग लेवल का कंट्रोल होगा. साथ ही, सुरक्षा की वजहों से, यह ग्लोबल डिमिंग लेवल की पसंदीदा सेटिंग को अनदेखा कर सकता है.

सही इस्तेमाल (इंप्लिसिट)

xrGetGlobalDimmingLevelANDROID फ़ंक्शन को इस तरह से तय किया गया है:

XrResult xrGetGlobalDimmingLevelANDROID(
    XrSession                                   session,
    float*                                      dimmingLevel);

पैरामीटर की जानकारी

  • session एक मान्य XrSession हैंडल है.
  • dimmingLevel, डिमिंग के मौजूदा लेवल का पॉइंटर है.

जवाब में मिले dimmingLevel की वैल्यू, 0.0 और 1.0 के बीच होनी चाहिए. 0.0 का मतलब है कि पूरी तरह से पारदर्शी और 1.0 का मतलब है कि पूरी तरह से धुंधला.

अगर डिमिंग लेवल सेट नहीं किया गया है, तो रनटाइम को डिमिंग लेवल को 0.0 पर सेट करना चाहिए. ऐसा तब करना चाहिए, जब पासथ्रू चालू हो और पासथ्रू बंद होने पर 1.0 पर सेट करना चाहिए.

सही इस्तेमाल (इंप्लिसिट)

  • xrGetGlobalDimmingLevelANDROID को कॉल करने से पहले, XR_ANDROID_global_passthrough_dimming एक्सटेंशन चालू करना ज़रूरी है
  • session एक मान्य XrSession हैंडल होना चाहिए
  • dimmingLevel को float वैल्यू का पॉइंटर होना चाहिए

रिटर्न कोड

सफलता

  • XR_SUCCESS
  • XR_SESSION_LOSS_PENDING

Failure

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

डिस्प्ले की रोशनी कम करने के लेवल में बदलाव होने का इवेंट

XrEventDataGlobalDimmingLevelChangedANDROID स्ट्रक्चर को इस तरह से तय किया गया है:

typedef struct XrEventDataGlobalDimmingLevelChangedANDROID {
    XrStructureType    type;
    const void*        next;
    XrSession          session;
} XrEventDataGlobalDimmingLevelChangedANDROID;

सदस्यों की जानकारी

  • type, इस स्ट्रक्चर का XrStructureType है.
  • next, NULL है या स्ट्रक्चर चेन में अगले स्ट्रक्चर का पॉइंटर है. OpenXR के मुख्य वर्शन या इस एक्सटेंशन में, इस तरह के स्ट्रक्चर के बारे में नहीं बताया गया है.
  • session एक मान्य XrSession हैंडल है.

ऐप्लिकेशन, xrPollEvent का इस्तेमाल करके इस इवेंट को वापस पा सकता है . यह इवेंट तब भेजा जाएगा, जब डिवाइसों पर मौजूद ऐप्लिकेशन या फ़िज़िकल बटन की मदद से, स्क्रीन की रोशनी कम करने के लेवल में बदलाव किया जाएगा.

जब फ़ोकस किया गया ऐप्लिकेशन किसी दूसरे ऐप्लिकेशन पर स्विच होता है, तब यह इवेंट नहीं भेजा जाएगा.

ऐप्लिकेशन को इवेंट का जवाब देने के लिए, xrGetGlobalDimmingLevelANDROID को कॉल करना चाहिए. इससे डिमिंग का नया लेवल मिलेगा और XrGlobalDimmingFrameEndInfoANDROID :: globalDimmingLevel को इसके हिसाब से अपडेट किया जा सकेगा. इवेंट का जवाब देने से यह गारंटी मिलती है कि जब ऐप्लिकेशन, डिमिंग लेवल में बदलाव करेगा, तब रनटाइम को सिग्नल मिलेगा.

सही इस्तेमाल (इंप्लिसिट)

कोड का उदाहरण

सिस्टम की क्षमता की जांच करना और ग्लोबल डिमिंग के लिए उपलब्ध लेवल की जानकारी देना

यहां दिए गए उदाहरण वाले कोड से पता चलता है कि ग्लोबल डिमिंग की सुविधा काम करती है या नहीं.

XrInstance instance; // previously initialized
XrSystemId systemId; // previously initialized

// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrEnumerateSupportedGlobalDimmingLevelsANDROID xrEnumerateSupportedGlobalDimmingLevelsANDROID;

XrSystemGlobalDimmingPropertiesANDROID dimmingControlSystemProperties { XR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID };

XrSystemProperties systemProperties; // Chain dimmingControlSystemProperties

// ...
// Run xrGetSystemProperties()
// ...

if (!dimmingControlSystemProperties.supportsGlobalDimming) {
  // The system does not support global dimming
  return;
}

// Enumerate supported levels
uint32_t count = 0;
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, nullptr));

std::vector<float> supportedLevels(count);
CHK_XR(xrEnumerateSupportedGlobalDimmingLevelsANDROID(instance, systemId, count, &count, supportedLevels.data()));

पोल डिमिंग लेवल में बदलाव का इवेंट

यहां दिए गए कोड के उदाहरण से पता चलता है कि डिमिंग लेवल में बदलाव के इवेंट को कैसे पोल किया जाता है.

XrEventDataBuffer event{ XR_TYPE_EVENT_DATA_BUFFER };

// ...
// Run xrPollEvent()
// ...

switch (event.type) {
  // This event will not be sent when focused app switches
  case XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID:
  {
    const XrEventDataGlobalDimmingLevelChangedANDROID &dimmingLevelChangedEvent =
            *reinterpret_cast<XrEventDataGlobalDimmingLevelChangedANDROID *>(&event);

    // Query new dimming level using xrGetGlobalDimmingLevelANDROID()
  }
}

नए निर्देश

नए स्ट्रक्चर

नए Enum कॉन्सटेंट

  • XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAME
  • XR_ANDROID_global_passthrough_dimming_SPEC_VERSION
  • XrStructureType को एक्सटेंड करना :

    • XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID
    • XR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROID
    • XR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID

समस्याएं

वर्शन हिस्ट्री

  • रिविज़न 1, 2025-10-07 (ब्रायन चेन)

    • एक्सटेंशन का शुरुआती ब्यौरा.