XR_ANDROID_recommended_settings
رشته نام
XR_ANDROID_recommended_settings
نوع افزونه
افزونه نمونه
شماره داخلی ثبتشده
455
بازبینی
1
وضعیت تصویب
تصویبنشده
وابستگیهای افزونه و نسخه
تاریخ آخرین تغییر
2026-03-16
همیاران
Spencer Quin، Google
Jared Finder، Google
Kevin Moule، Google
Nihav Jain، Google
Levana Chen، Google
Alvin Shi، Google
Salar Khan، Google
نمای کلی
محیط پیشفرض کاربر میتواند بااستفاده از ترکیبی از حالت ترکیب و روش ورودی در حالتهای مختلفی باشد. این افزونه تنظیمات توصیهشده را برای کاربر ارائه میدهد که با وضعیت محیط پیشفرض کاربر قبلاز راهاندازی برنامه مطابقت دارد تا انتقال بهآرامی انجام شود.
ساختارها و شمارشها
بیتهای XrInputModalityFlagsANDROID حالتهای ورودی مختلفی را که ممکن است درحال استفاده باشند شناسایی میکند.
typedef XrFlags64 XrInputModalityFlagsANDROID;
بیتهای معتبر برای XrInputModalityFlagsANDROID توسط XrInputModalityFlagBitsANDROID تعریف میشوند که بهصورت زیر مشخص شده است:
// Flag bits for XrInputModalityFlagsANDROID
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HEAD_BIT_ANDROID = 0x00000001;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID = 0x00000002;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_HANDS_BIT_ANDROID = 0x00000004;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_MOUSE_BIT_ANDROID = 0x00000008;
static const XrInputModalityFlagsANDROID XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID = 0x00000010;
توضیحات پرچم
XR_INPUT_MODALITY_HEAD_BIT_ANDROID— نشاندهنده روش ورودیای است که از ردگیری سر استفاده میکند.XR_INPUT_MODALITY_CONTROLLER_BIT_ANDROID— نشاندهنده یک روش ورودی است که از هرگونه ورودی کنترلکننده XR استفاده میکند.XR_INPUT_MODALITY_HANDS_BIT_ANDROID— نشاندهنده یک روش ورودی است که از ردیابی دست استفاده میکند.XR_INPUT_MODALITY_MOUSE_BIT_ANDROID— نشاندهنده یک روش ورودی است که از ورودیهای موشواره استفاده میکند.XR_INPUT_MODALITY_GAZE_AND_GESTURE_BIT_ANDROID— نشاندهنده یک روش ورودی است که ردگیری چشم و ردگیری دست را ترکیب میکند.
ساختار XrRecommendedSettingsANDROID بهصورت زیر تعریف میشود:
typedef struct XrRecommendedSettingsANDROID {
XrStructureType type;
void* next;
XrEnvironmentBlendMode blendMode;
float passthroughOpacity;
XrInputModalityFlagsANDROID activeInputModalities;
} XrRecommendedSettingsANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
blendModeیک XrEnvironmentBlendMode است که حالت ترکیب محیط پیشفرض را درست قبلاز راهاندازی برنامه نشان میدهد. -
passthroughOpacityیکfloatاست که نشاندهنده شفافیت عبور محیط پیشفرض درست قبلاز راهاندازی برنامه است. زمان اجرا باید این مقدار را برای دستگاههای OST روی (1.0 - dimming_value) تنظیم کند. -
activeInputModalitiesیک ماسک بیتی از XrInputModalityFlagsANDROID است که نشاندهنده روشهای ورودی مورداستفاده در محیط پیشفرض درست قبلاز راهاندازی برنامه است.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_recommended_settingsباید پیشاز استفاده از XrRecommendedSettingsANDROID فعال شود -
typeبایدXR_TYPE_RECOMMENDED_SETTINGS_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
blendModeباید مقدار XrEnvironmentBlendMode معتبری باشد -
activeInputModalitiesباید ترکیب معتبری از مقادیر XrInputModalityFlagBitsANDROID باشد -
activeInputModalitiesنباید0باشد
درحال شمارش وضعیتهای محیطی پشتیبانیشده
برنامه میتواند بااستفاده از xrEnumerateEnvironmentBlendModes و گسترش دادن XrSystemProperties با ساختار XrSystemInputModalityPropertiesANDROID هنگام فراخوانی xrGetSystemProperties، تعیین کند که کدام حالتهای ترکیب و حالتهای ورودی توسط سیستم پشتیبانی میشوند.
ساختار XrSystemInputModalityPropertiesANDROID بهصورت زیر تعریف میشود:
typedef struct XrSystemInputModalityPropertiesANDROID {
XrStructureType type;
void* next;
XrInputModalityFlagsANDROID supportedInputModalities;
} XrSystemInputModalityPropertiesANDROID;
توضیحات عضو
typeXrStructureType این ساختار است.-
nextبرابر باNULLیا اشارهگری به ساختار بعدی در زنجیره ساختار است. چنین ساختارهایی در OpenXR اصلی یا این افزونه تعریف نشده است. -
supportedInputModalitiesیک یا چند XrInputModalityFlagsANDROID است که نشاندهنده روشهای ورودی پشتیبانیشده توسط سیستم است.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_recommended_settingsباید قبلاز استفاده از XrSystemInputModalityPropertiesANDROID فعال شود -
typeبایدXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROIDباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد
دریافت تنظیمات توصیهشده (وضعیت محیط پیشفرض پیشاز عرضه)
XrResult xrGetRecommendedSettingsANDROID(
XrInstance instance,
XrSystemId systemId,
XrRecommendedSettingsANDROID* output);
شرح پارامترها
-
instanceیک دسته XrInstance است که قبلاً با xrCreateInstance ایجاد شده است. -
systemIdیکXrSystemIdاست که قبلاً از xrGetSystem واکشی شده است. -
outputاشارهگری به ساختار XrRecommendedSettingsANDROID است که با وضعیت محیط پیشفرض برونداد میشود.
استفاده معتبر (ضمنی)
- افزونه
XR_ANDROID_recommended_settingsباید قبلاز فراخوانی xrGetRecommendedSettingsANDROID فعال شود -
instanceباید شناسه XrInstance معتبری باشد -
outputباید اشارهگری به ساختار XrRecommendedSettingsANDROID باشد
کدهای برگشتی
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SYSTEM_INVALID
کد نمونه برای تنظیمات توصیهشده
کد نمونه زیر نحوه دریافت روشهای ورودی پشتیبانیشده، دریافت تنظیمات توصیهشده، و تأیید اینکه تنظیمات گزارششده توسط سیستم پشتیبانی میشوند را نشان میدهد.
XrInstance instance; // Created at app startup
XrSystemId systemId; // previously initialized from xrGetSystem
XrViewConfigurationType viewType; // previously initialized to select desired view configuration
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetRecommendedSettingsANDROID xrGetRecommendedSettingsANDROID; // previously initialized
XrSystemInputModalityPropertiesANDROID props = {
.type = XR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
};
XrSystemProperties base = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &props
};
CHK_XR(xrGetSystemProperties(instance, systemId, &base));
uint32_t blendModeCount = 0;
CHK_XR(
xrEnumerateEnvironmentBlendModes(instance, systemId, viewType, 0, &blendModeCount, nullptr));
std::vector<XrEnvironmentBlendMode> supportedBlendModes(blendModeCount);
CHK_XR(
xrEnumerateEnvironmentBlendModes(
instance, systemId, viewType, blendModeCount, &blendModeCount, supportedBlendModes.data()));
XrRecommendedSettingsANDROID output = {
.type = XR_TYPE_RECOMMENDED_SETTINGS_ANDROID
};
XrResult result = xrGetRecommendedSettingsANDROID(instance, systemId, &output);
if (result == XR_SUCCESS) {
// We now know the current state of the default environment as recommended settings
bool correctBlendMode = false;
for(XrEnvironmentBlendMode blendMode : supportedBlendModes) {
if (blendMode == output.blendMode) {
correctBlendMode = true;
break;
}
}
assert(correctBlendMode);
assert((~props.supportedInputModalities & output.activeInputModalities) == 0);
}
فرمانهای جدید
سازههای جدید
- XrRecommendedSettingsANDROID
درحال گسترش دادن XrSystemProperties :
Enums جدید
ماسکهای بیتی جدید
ثابتهای شمارشی جدید
XR_ANDROID_RECOMMENDED_SETTINGS_EXTENSION_NAMEXR_ANDROID_recommended_settings_SPEC_VERSIONدرحال گسترش دادن XrStructureType :
XR_TYPE_RECOMMENDED_SETTINGS_ANDROIDXR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
مشکلات
سابقه نسخه
نسخه ۳، ۲۰۲۶/۰۳/۱۶ (Salar Khan)
- به عمومی ارتقا یافت، بیتهای پرچم حالتهای ورودی ساخته شد، و نام افزونه به
XR_ANDROID_recommended_settingsتغییر کرد.
- به عمومی ارتقا یافت، بیتهای پرچم حالتهای ورودی ساخته شد، و نام افزونه به
بازبینی ۲، ۲۰۲۵-۰۳-۲۸ (Salar Khan)
- به ANDROIDX تغییر کرد و passthroughOpacity اضافه شد.
بازبینی ۱، ۲۰۲۵-۰۲-۱۸ (سالار خان)
- نسخه اولیه.