XR_ANDROID_enumerate_system_extension_properties
Chuỗi tên
XR_ANDROID_enumerate_system_extension_properties
Loại tiện ích
Tiện ích thực thể
Số tiện ích đã đăng ký
725
Bản sửa đổi
1
Trạng thái phê chuẩn
Chưa phê chuẩn
Tiện ích và các phần phụ thuộc vào phiên bản
Ngày sửa đổi gần nhất
2026-02-11
Trạng thái SHTT
Không có thông báo xác nhận quyền sở hữu SHTT nào được biết.
Cộng tác viên
Spencer Quin, Google
Nihav Jain, Google
Kenny Vercaemer, Google
Tổng quan
Tiện ích này cho phép các ứng dụng xác định những tiện ích được cấu hình hệ thống hiện tại hỗ trợ. Ngay cả khi một tiện ích được thời gian chạy hỗ trợ, thì tiện ích đó có thể không được phần cứng hệ thống hiện tại hỗ trợ.
Cấu trúc XrSystemExtensionPropertiesANDROID được xác định như sau:
typedef struct XrSystemExtensionPropertiesANDROID {
XrStructureType type;
void* next;
XrExtensionProperties properties;
XrBool32 isSupported;
} XrSystemExtensionPropertiesANDROID;
Mô tả thành phần
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc một con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.propertieslà XrExtensionProperties có tên tiện ích.isSupportedlà một giá trị boolean cho biết liệu tiện ích có được hệ thống hiện tại hỗ trợ hay không.
Cách sử dụng hợp lệ (Ngụ ý)
- Bạn phải bật tiện ích
XR_ANDROID_enumerate_system_extension_propertiestrước khi sử dụng XrSystemExtensionPropertiesANDROID -
typephải làXR_TYPE_SYSTEM_EXTENSION_PROPERTIES_ANDROID -
nextphải làNULLhoặc một con trỏ hợp lệ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Cấu trúc XrEventDataSystemPropertiesChangedANDROID được xác định như sau:
typedef struct XrEventDataSystemPropertiesChangedANDROID {
XrStructureType type;
const void* next;
} XrEventDataSystemPropertiesChangedANDROID;
Mô tả thành phần
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc một con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
Thời gian chạy phải xếp hàng sự kiện này khi các thuộc tính tiện ích hệ thống đã thay đổi. Ví dụ: khi các thiết bị ngoại vi mới được kết nối, cho phép chức năng mới.
Tất cả các lệnh gọi đến xrEnumerateSystemExtensionPropertiesANDROID phải trả về cùng một giá trị cho đến khi một sự kiện XrEventDataSystemPropertiesChangedANDROID mới được xếp hàng.
Khi nhận được sự kiện này, ứng dụng nên gọi lại xrEnumerateSystemExtensionPropertiesANDROID để xác định các thuộc tính tiện ích hệ thống mới nhất, có thể tạo hoặc huỷ các trình theo dõi được liên kết với những tiện ích đó nếu cần.
Cách sử dụng hợp lệ (Ngụ ý)
- Bạn phải bật tiện ích
XR_ANDROID_enumerate_system_extension_propertiestrước khi sử dụng XrEventDataSystemPropertiesChangedANDROID -
typephải làXR_TYPE_EVENT_DATA_SYSTEM_PROPERTIES_CHANGED_ANDROID -
nextphải làNULLhoặc một con trỏ hợp lệ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Hàm xrEnumerateSystemExtensionPropertiesANDROID được xác định như sau:
XrResult xrEnumerateSystemExtensionPropertiesANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t propertyCapacityInput,
uint32_t* propertyCountOutput,
XrSystemExtensionPropertiesANDROID* properties);
Mô tả tham số
instancelà một XrInstance hợp lệ .systemIdlà một sliink:XrSystemId hợp lệ của hệ thống để truy xuất các thuộc tính tiện ích.propertyCapacityInputlà dung lượng của mảngpropertieshoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.propertyCountOutputlà số thuộc tính tiện ích được yêu cầu.propertieslà một mảng các cấu trúc XrSystemExtensionPropertiesANDROID. Giá trị này có thể làNULLnếupropertyCapacityInputlà 0.- Hãy xem phần Tham số kích thước vùng đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
propertiescần thiết.
Cách sử dụng hợp lệ (Ngụ ý)
- Bạn phải bật tiện ích
XR_ANDROID_enumerate_system_extension_propertiestrước khi gọi xrEnumerateSystemExtensionPropertiesANDROID -
instancephải là một trình xử lý XrInstance hợp lệ -
propertyCountOutputphải là một con trỏ trỏ đến giá trịuint32_t - Nếu
propertyCapacityInputkhông phải là0, thìpropertiesphải là một con trỏ trỏ đến một mảng các cấu trúcpropertyCapacityInputXrSystemExtensionPropertiesANDROID
Mã trả về
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Ví dụ
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()
);
Vấn đề
Nhật ký phiên bản
Bản sửa đổi 1, ngày 17 tháng 3 năm 2026 (Kenny Vercaemer)
- Phiên bản tiện ích ban đầu.