XR_ANDROID_global_passthrough_dimming
מחרוזת שם
XR_ANDROID_global_passthrough_dimming
סוג התוסף
תוסף למכונה
מספר השלוחה הרשום
797
גרסה
1
סטטוס האישור
לא אושר
תלויות של תוספים וגרסאות
תאריך השינוי האחרון
2026-03-10
סטטוס IP
אין תלונות ידועות על הפרת קניין רוחני.
שותפים ביצירת התוכן
בריאן צ'ן, Google
קייל צ'ן, Google
ניהב ג'יין, Google
ספנסר קווין, Google
סקירה כללית
ככל שמוצגים מכשירים אופטיים שקופים, חשוב לא רק לאפשר לאפליקציות להתאים את הכהות של המעבר כדי לספק למשתמש את השילוב הטוב ביותר עם ההקשר של האפליקציה, אלא גם לאפשר למערכת להבהיר את המעבר מטעמי בטיחות.
התוסף הזה מספק שתי פונקציות לאפליקציות כדי להגדיר ולקבל את רמת העמעום הנוכחית, וגם אירוע לשידור כשמשתנה רמת העמעום.
בדיקת יכולות המערכת
המבנה של XrSystemGlobalDimmingPropertiesANDROID מוגדר כך:
typedef struct XrSystemGlobalDimmingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsGlobalDimming;
} XrSystemGlobalDimmingPropertiesANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. מבנים כאלה לא מוגדרים ב-OpenXR או בתוסף הזה. -
supportsGlobalDimmingהואXrBool32, שמציין אם המערכת הנוכחית תומכת בעמעום גלובלי.
אפליקציה יכולה לבדוק אם המערכת תומכת בעמעום גלובלי על ידי שרשור של מבנה XrSystemGlobalDimmingPropertiesANDROID אל XrSystemProperties כשקוראים ל-xrGetSystemProperties .
אם זמן הריצה מחזיר את הערך XR_FALSE עבור supportsGlobalDimming , זמן הריצה חייב להחזיר את הערך XR_ERROR_FEATURE_UNSUPPORTED כשמתבצעת קריאה ל-xrGetGlobalDimmingLevelANDROID.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_global_passthrough_dimmingלפני שמשתמשים ב-XrSystemGlobalDimmingPropertiesANDROID -
typeחייב להיותXR_TYPE_SYSTEM_GLOBAL_DIMMING_PROPERTIES_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
ספירת רמות העמעום הגלובליות הנתמכות
המבנה של 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הוא מצביע למערך של רמות נתמכות, אבל יכול להיות NULL אםsupportedGlobalDimmingLevelCapacityInputהוא 0.
אם הערך המוחזר של supportedGlobalDimmingLevelCountOutput הוא 0, כל רמות העמעום הגלובליות בין 0.0 ל-1.0 נתמכות.
xrEnumerateSupportedGlobalDimmingLevelsANDROID סופר את רמות העמעום הגלובליות שנתמכות על ידי XrSystemId . הרמות הנתמכות לא יכולות להשתנות במהלך משך החיים של XrInstance . רשימת הרמות שמוחזרת חייבת להיות ממוינת בסדר עולה.
סביבות זמן ריצה חייבות תמיד להחזיר תוכן מאגר זהה מהספירה הזו עבור systemId נתון ולמשך כל משך החיים של instance .
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_global_passthrough_dimmingלפני שמפעילים את xrEnumerateSupportedGlobalDimmingLevelsANDROID -
instanceחייב להיות כינוי תקין של XrInstance -
supportedGlobalDimmingLevelCountOutputחייב להיות מצביע לערךuint32_t - אם
supportedGlobalDimmingLevelCapacityInputהוא לא0, אזsupportedGlobalDimmingLevelsחייב להיות מצביע למערך של ערכיfloatמסוגsupportedGlobalDimmingLevelCapacityInput
קודי החזרה
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 , בתור היחס בין שטף הקרינה המועבר לבין שטף הקרינה הפוגע באורכי גל של אור נראה (380nm עד 780nm).
XrGlobalDimmingFrameEndInfoANDROID הוא מבנה שאפליקציה יכולה לשרשר ב-XrFrameEndInfo כדי לבקש רמה מועדפת של עמעום גלובלי.
זמן הריצה חייב לכבד את רמת העמעום המבוקשת אם היא שונה מרמת העמעום הנוכחית.
לסביבת זמן הריצה תהיה שליטה על רמת העמעום הגלובלית, והיא עשויה להתעלם מרמת העמעום הגלובלית המועדפת מטעמי בטיחות.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_global_passthrough_dimmingלפני שמשתמשים ב-XrGlobalDimmingFrameEndInfoANDROID -
typeחייב להיותXR_TYPE_GLOBAL_DIMMING_FRAME_END_INFO_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
הפונקציה xrGetGlobalDimmingLevelANDROID מוגדרת כך:
XrResult xrGetGlobalDimmingLevelANDROID(
XrSession session,
float* dimmingLevel);
תיאורי פרמטרים
-
sessionהוא כינוי תקין של XrSession. -
dimmingLevelהוא מצביע לרמת העמעום הנוכחית.
הערך המוחזר של dimmingLevel חייב להיות בין 0.0 ל-1.0, כאשר 0.0 מציין שקיפות מלאה ו-1.0 מציין עמעום מלא.
אם רמת העמעום לא הוגדרה, זמן הריצה חייב להגדיר את רמת העמעום ל-0.0 כשמצב Passthrough מופעל, ול-1.0 כשמצב Passthrough מושבת.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_global_passthrough_dimmingלפני שקוראים לפונקציה xrGetGlobalDimmingLevelANDROID -
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 בהתאם. התגובה לאירוע מבטיחה שזמן הריצה יקבל אות כשהאפליקציה תשנה את רמת העמעום המועדפת.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_global_passthrough_dimmingלפני שמשתמשים ב-XrEventDataGlobalDimmingLevelChangedANDROID -
typeחייב להיותXR_TYPE_EVENT_DATA_GLOBAL_DIMMING_LEVEL_CHANGED_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
קוד לדוגמה
בדיקת יכולת המערכת ופירוט רמות העמעום הגלובליות הנתמכות
הקוד לדוגמה הבא מדגים איך לבדוק אם יש תמיכה בעמעום גלובלי.
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_VERSIONהרחבה של XrStructureType :
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 (בריאן צ'ן)
- תיאור התוסף הראשוני.