XR_ANDROID_enumerate_system_extension_properties
Name String
XR_ANDROID_enumerate_system_extension_properties
نوع الإضافة
إضافة مثيل
رقم الإضافة المسجَّل
725
المراجعة
1
حالة التصديق
لم تتم المصادقة عليها
الاعتماد على الإضافات والإصدارات
تاريخ آخر تعديل
2026-02-11
حالة الملكية الفكرية
ما مِن مطالبات معروفة بشأن الملكية الفكرية.
المساهمون
سبنسر كوين، 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 - يجب أن يكون
typeXR_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 - يجب أن يكون
typeXR_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 (كيني فيركايمر)
- الإصدار الأولي للإضافة