XR_ANDROID_enumerate_system_extension_properties
מחרוזת שם
XR_ANDROID_enumerate_system_extension_properties
סוג התוסף
תוסף למכונה
מספר השלוחה הרשום
725
גרסה
1
סטטוס האישור
לא אושר
תלויות של תוספים וגרסאות
תאריך השינוי האחרון
2026-02-11
סטטוס IP
אין תלונות ידועות על הפרת קניין רוחני.
שותפים ביצירת התוכן
ספנסר קווין, Google
ניהב ג'יין, Google
קני ורקאמר, Google
סקירה כללית
התוסף הזה מאפשר לאפליקציות לקבוע באילו תוספים תומכת הגדרת המערכת הנוכחית. גם אם תוסף נתמך על ידי סביבת זמן הריצה, יכול להיות שהוא לא נתמך על ידי חומרת המערכת הנוכחית.
המבנה של XrSystemExtensionPropertiesANDROID מוגדר כך:
typedef struct XrSystemExtensionPropertiesANDROID {
XrStructureType type;
void* next;
XrExtensionProperties properties;
XrBool32 isSupported;
} XrSystemExtensionPropertiesANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים. -
propertiesהוא XrExtensionProperties עם שם התוסף. -
isSupportedהוא ערך בוליאני שמציין אם התוסף נתמך כרגע על ידי המערכת.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_enumerate_system_extension_propertiesלפני שמשתמשים ב-XrSystemExtensionPropertiesANDROID -
typeחייב להיותXR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
המבנה של XrEventDataSystemPropertiesChangedANDROID מוגדר כך:
typedef struct XrEventDataSystemPropertiesChangedANDROID {
XrStructureType type;
const void* next;
} XrEventDataSystemPropertiesChangedANDROID;
תיאורי חברים
-
typeהוא ה-XrStructureType של המבנה הזה. -
nextהואNULLאו מצביע למבנה הבא בשרשרת מבנים.
סביבת זמן הריצה חייבת להוסיף את האירוע הזה לתור כשהמאפיינים של תוסף המערכת משתנים. לדוגמה, כשמחברים ציוד היקפי חדש שמאפשר פונקציונליות חדשה.
כל הקריאות ל-xrEnumerateSystemExtensionPropertiesANDROID חייבות להחזיר את אותם ערכים עד שאירוע XrEventDataSystemPropertiesChangedANDROID חדש יתווסף לתור.
כשאפליקציה מקבלת את האירוע הזה, היא צריכה לקרוא שוב ל-xrEnumerateSystemExtensionPropertiesANDROID כדי לקבוע את מאפייני התוספים העדכניים ביותר של המערכת, ואולי ליצור או להשמיד את כלי המעקב שמשויכים לתוספים האלה לפי הצורך.
שימוש תקין (משתמע)
- צריך להפעיל את התוסף
XR_ANDROID_enumerate_system_extension_propertiesלפני שמשתמשים ב-XrEventDataSystemPropertiesChangedANDROID -
typeחייב להיותXR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID -
nextחייב להיותNULLאו מצביע תקין למבנה הבא בשרשרת מבנים
הפונקציה xrEnumerateSystemExtensionPropertiesANDROID מוגדרת כך:
XrResult xrEnumerateSystemExtensionPropertiesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t propertyCapacityInput,
uint32_t* propertyCountOutput,
XrSystemExtensionPropertiesANDROID* properties);
תיאורי פרמטרים
-
instanceהוא XrInstance תקין. -
systemIdהוא sliink:XrSystemId תקין של המערכת שרוצים לאחזר את מאפייני התוסף שלה. -
propertyCapacityInputהוא הקיבולת של המערךproperties, או 0 כדי לציין בקשה לאחזור הקיבולת הנדרשת. -
propertyCountOutputהוא מספר מאפייני התוספים המבוקשים. -
propertiesהוא מערך של מבני XrSystemExtensionPropertiesANDROID. הערך שלNULLיכול להיותpropertyCapacityInputאם הוא 0. - בקטע פרמטרים של שטח אחסון זמני יש תיאור מפורט של אחזור הגודל הנדרש של
properties.
שימוש תקין (משתמע)
- חובה להפעיל את התוסף
XR_ANDROID_enumerate_system_extension_propertiesלפני שקוראים לפונקציה xrEnumerateSystemExtensionPropertiesANDROID -
instanceחייב להיות כינוי תקין של XrInstance -
propertyCountOutputחייב להיות מצביע לערךuint32_t - אם
propertyCapacityInputהוא לא0, אזpropertiesחייב להיות מצביע למערך של מבניpropertyCapacityInputXrSystemExtensionPropertiesANDROID
קודי החזרה
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
דוגמה
XrInstance instance; // XrInstance previously created
XrSystemId systemId; // XrSystemId from a previously created instance
PFN_xrEnumerateSystemExtensionPropertiesANDROID xrEnumerateSystemExtensionPropertiesANDROID;
// Poll events for recommended resolution changes.
XrEventDataBuffer event = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult result = xrPollEvent(instance, &event);
if (result == XR_SUCCESS) {
switch (event.type) {
case XR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID:
// It's possible that the system was lost and a new id will be returned
XrSystemId newSystemId;
XrSystemGetInfo getInfo = {XR_TYPE_SYSTEM_GET_INFO};
getInfo.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY;
if(XR_SUCCESS == xrGetSystem(instance, &getInfo, &newSystemId)) {
if(systemId != newSystemId) {
//Do things like recreate the session
systemId = newSystemId;
}
}
// Enumerate the extensions to see which ones are now supported based on hardware changes
uint32_t extensionsCount;
xrEnumerateSystemExtensionPropertiesANDROID(instance, systemId, 0, &extensionsCount, NULL);
std::vector<XrSystemExtensionPropertiesANDROID> properties(extensionsCount,
{.type = XR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID});
XrResult result = xrEnumerateSystemExtensionPropertiesANDROID(
instance,
systemId,
extensionsCount,
&extensionsCount,
properties.data()
);
// Do something based on which extensions are now supported by the system
break;
}
}
PFN_xrEnumerateSystemExtensionPropertiesANDROID xrEnumerateSystemExtensionPropertiesANDROID;
XrInstance instance;
XrInstanceCreateInfo createInfo = {XR_TYPE_INSTANCE_CREATE_INFO};
// Initialize the createInfo with appropriate values for the application
CHK_XR(xrCreateInstance(&createInfo, &instance));
// Get the systemId for the system.
XrSystemId systemId;
XrSystemGetInfo getInfo = {XR_TYPE_SYSTEM_GET_INFO};
getInfo.formFactor = XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY;
CHK_XR(xrGetSystem(instance, &getInfo, &systemId));
// Enumerate the system extension properties.
uint32_t extensionsCount;
xrEnumerateSystemExtensionPropertiesANDROID(instance, systemId, 0, &extensionsCount, NULL);
std::vector<XrSystemExtensionPropertiesANDROID> properties(extensionsCount,
{.type = XR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID});
XrResult result = xrEnumerateSystemExtensionPropertiesANDROID(
instance,
systemId,
extensionsCount,
&extensionsCount,
properties.data()
);
בעיות
היסטוריית הגרסאות
גרסה 1, 17.03.2026 (Kenny Vercaemer)
- גרסת התוסף הראשונית.