XR_ANDROID_enumerate_system_extension_properties
Name String
XR_ANDROID_enumerate_system_extension_properties
拡張機能の種類
インスタンス拡張
登録済みの内線番号
725
リビジョン
1
承認ステータス
未批准
拡張機能とバージョンの依存関係
最終更新日
2026-02-11
IP ステータス
既知の IP 申し立てはありません。
寄与者
Spencer Quin、Google
Nihav Jain、Google
Kenny Vercaemer、Google
概要
この拡張機能を使用すると、アプリケーションは、現在のシステム構成でサポートされている拡張機能を特定できます。拡張機能がランタイムでサポートされている場合でも、現在のシステム ハードウェアではサポートされていない可能性があります。
XrSystemExtensionPropertiesANDROID 構造体は次のように定義されます。
typedef struct XrSystemExtensionPropertiesANDROID {
XrStructureType type;
void* next;
XrExtensionProperties properties;
XrBool32 isSupported;
} XrSystemExtensionPropertiesANDROID;
メンバーの説明
typeは、この構造の XrStructureType です。nextは、NULLまたは構造体チェーン内の次の構造体へのポインタです。propertiesは、拡張機能名を含む XrExtensionProperties です。isSupportedは、拡張機能が現在システムでサポートされているかどうかを示すブール値です。
有効な使用方法(暗黙的)
- XrSystemExtensionPropertiesANDROID を使用する前に、
XR_ANDROID_enumerate_system_extension_properties拡張機能を有効にする必要があります。 -
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 を再度呼び出して最新のシステム拡張プロパティを特定し、必要に応じてそれらの拡張機能に関連付けられたトラッカーを作成または破棄する必要があります。
有効な使用方法(暗黙的)
- 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(Kenny Vercaemer)
- 拡張機能の初期バージョン。