XR_ANDROID_enumerate_system_extension_properties
이름 문자열
XR_ANDROID_enumerate_system_extension_properties
확장 프로그램 유형
인스턴스 확장 프로그램
등록된 내선 번호
725
버전
1
승인 상태
비준되지 않음
확장 프로그램 및 버전 종속 항목
최종 수정일
2026-02-11
IP 상태
알려진 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또는 구조 체인의 다음 구조에 대한 포인터입니다.
런타임은 시스템 확장 프로그램 속성이 변경되면 이 이벤트를 큐에 추가해야 합니다(MUST). 예를 들어 새 주변기기가 연결되어 새 기능이 사용 설정되는 경우입니다.
xrEnumerateSystemExtensionPropertiesANDROID에 대한 모든 호출은 새 XrEventDataSystemPropertiesChangedANDROID 이벤트가 큐에 추가될 때까지 동일한 값을 반환해야 합니다(must).
애플리케이션은 이 이벤트를 수신하면 xrEnumerateSystemExtensionPropertiesANDROID를 다시 호출하여 최신 시스템 확장 프로그램 속성을 확인하고 필요에 따라 이러한 확장 프로그램과 연결된 추적기를 만들거나 제거해야 합니다.
올바른 사용 (암시적)
- XrEventDataSystemPropertiesChangedANDROID를 사용하기 전에
XR_ANDROID_enumerate_system_extension_properties확장 프로그램을 사용 설정해야 합니다. -
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 구조의 배열입니다.propertyCapacityInput가 0인 경우NULL일 수 있습니다.- 필요한
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, 2026-03-17 (케니 베르카머)
- 초기 확장 프로그램 버전입니다.