XR_ANDROID_global_passthrough_dimming
Name String
XR_ANDROID_global_passthrough_dimming
एक्सटेंशन का टाइप
इंस्टेंस एक्सटेंशन
रजिस्टर किया गया एक्सटेंशन नंबर
797
बदलाव
1
पुष्टि की स्थिति
मंज़ूरी नहीं मिली
एक्सटेंशन और वर्शन डिपेंडेंसी
पिछली बार बदलाव किए जाने की तारीख
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 दिखाना चाहिए.
सही इस्तेमाल (इंप्लिसिट)
- XrSystemGlobalDimmingPropertiesANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_global_passthrough_dimmingएक्सटेंशन चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
ग्लोबल डिमिंग के लिए उपलब्ध लेवल की सूची बनाएं
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कोsupportedGlobalDimmingLevelCapacityInputfloatवैल्यू के कलेक्शन का पॉइंटर होना चाहिए
रिटर्न कोड
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_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 में चेन कर सकता है, ताकि ग्लोबल डिमिंग के पसंदीदा लेवल का अनुरोध किया जा सके.
अगर अनुरोध किया गया डिमिंग लेवल, मौजूदा डिमिंग लेवल से अलग है, तो रनटाइम को अनुरोध किए गए डिमिंग लेवल का पालन करना होगा.
रनटाइम के पास, ग्लोबल डिमिंग लेवल का कंट्रोल होगा. साथ ही, सुरक्षा की वजहों से, यह ग्लोबल डिमिंग लेवल की पसंदीदा सेटिंग को अनदेखा कर सकता है.
सही इस्तेमाल (इंप्लिसिट)
- XrGlobalDimmingFrameEndInfoANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_global_passthrough_dimmingएक्सटेंशन को चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
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_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_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 को इसके हिसाब से अपडेट किया जा सकेगा. इवेंट का जवाब देने से यह गारंटी मिलती है कि जब ऐप्लिकेशन, डिमिंग लेवल में बदलाव करेगा, तब रनटाइम को सिग्नल मिलेगा.
सही इस्तेमाल (इंप्लिसिट)
- XrEventDataGlobalDimmingLevelChangedANDROID का इस्तेमाल करने से पहले,
XR_ANDROID_global_passthrough_dimmingएक्सटेंशन को चालू करना ज़रूरी है -
typeकी वैल्यूXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDहोनी चाहिए -
nextNULLया स्ट्रक्चर चेन में अगले स्ट्रक्चर का मान्य पॉइंटर होना चाहिए
कोड का उदाहरण
सिस्टम की क्षमता की जांच करना और ग्लोबल डिमिंग के लिए उपलब्ध लेवल की जानकारी देना
यहां दिए गए उदाहरण वाले कोड से पता चलता है कि ग्लोबल डिमिंग की सुविधा काम करती है या नहीं.
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()
}
}
नए निर्देश
नए स्ट्रक्चर
- XrEventDataGlobalDimmingLevelChangedANDROID
XrFrameEndInfo को एक्सटेंड करना :
XrSystemProperties को एक्सटेंड करना :
नए Enum कॉन्सटेंट
XR_ANDROID_GLOBAL_PASSTHROUGH_DIMMING_EXTENSION_NAMEXR_ANDROID_global_passthrough_dimming_SPEC_VERSIONXrStructureType को एक्सटेंड करना :
XR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROIDXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROIDXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID
समस्याएं
वर्शन हिस्ट्री
रिविज़न 1, 2025-10-07 (ब्रायन चेन)
- एक्सटेंशन का शुरुआती ब्यौरा.