تنظیمات پیشنهادی XR_ANDROID
رشته نام
XR_ANDROID_recommended_settings
نوع افزونه
افزونه نمونه
شماره داخلی ثبت شده
۴۵۵
بازنگری
۱
وضعیت تصویب
تصویب نشده
وابستگیهای افزونه و نسخه
آخرین تاریخ اصلاح
۲۰۲۶-۰۳-۱۶
مشارکتکنندگان
اسپنسر کوئین، گوگل
جارد فایندر، گوگل
کوین مول، گوگل
نیهاو جین، گوگل
لوانا چن، گوگل
آلوین شی، گوگل
سالار خان، گوگل
نمای کلی
محیط پیشفرض کاربر میتواند با استفاده از ترکیبی از حالت ترکیبی و روش ورودی، در حالتهای مختلفی باشد. این افزونه تنظیمات پیشنهادی را برای کاربر ارائه میدهد که مطابق با وضعیت محیط پیشفرض کاربر قبل از اجرای برنامه است تا انتقال روان تضمین شود.
ساختارها و Enumها
بیتهای 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;
توضیحات اعضا
-
typeنوع XrStructureType این ساختار است. -
nextباNULLیا اشارهگری به ساختار بعدی در یک زنجیره ساختار است. چنین ساختارهایی در هسته OpenXR یا این افزونه تعریف نشدهاند. -
blendModeیک XrEnvironmentBlendMode است که حالت ترکیبی پیشفرض محیط را درست قبل از اجرای برنامه نشان میدهد. -
passthroughOpacityیکfloatاست که میزان شفافیت محیط پیشفرض passthrough را درست قبل از اجرای برنامه نشان میدهد. زمان اجرا باید این مقدار را برای دستگاههای 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 و با استفاده از ساختار XrSystemInputModalityPropertiesANDROID هنگام فراخوانی xrGetSystemProperties ، تعیین کند که کدام حالت ترکیبی و حالتهای ورودی توسط سیستم پشتیبانی میشوند.
ساختار XrSystemInputModalityPropertiesANDROID به صورت زیر تعریف شده است:
typedef struct XrSystemInputModalityPropertiesANDROID {
XrStructureType type;
void* next;
XrInputModalityFlagsANDROID supportedInputModalities;
} XrSystemInputModalityPropertiesANDROID;
توضیحات اعضا
-
typeنوع XrStructureType این ساختار است. -
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_UNSUPPORTED -
XR_ERROR_HANDLE_INVALID -
XR_ERROR_INSTANCE_LOST -
XR_ERROR_RUNTIME_FAILURE -
XR_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);
}
دستورات جدید
سازههای جدید
Enum های جدید
بیتماسکهای جدید
ثابتهای شمارشی جدید
-
XR_ANDROID_RECOMMENDED_SETTINGS_EXTENSION_NAME -
XR_ANDROID_recommended_settings_SPEC_VERSION گسترش XrStructureType :
-
XR_TYPE_RECOMMENDED_SETTINGS_ANDROID -
XR_TYPE_SYSTEM_INPUT_MODALITY_PROPERTIES_ANDROID
-
مسائل
تاریخچه نسخه
نسخه ۳، ۲۰۲۶-۰۳-۱۶ (سالار خان)
- به صورت عمومی ارتقا یافت، بیتهای پرچم روشهای ورودی را ایجاد کرد و نام افزونه را به
XR_ANDROID_recommended_settingsتغییر داد.
- به صورت عمومی ارتقا یافت، بیتهای پرچم روشهای ورودی را ایجاد کرد و نام افزونه را به
نسخه ۲، ۲۰۲۵-۰۳-۲۸ (سالار خان)
- به ANDROIDX تغییر دهید و passthroughOpacity را نیز اضافه کنید.
نسخه ۱، ۲۰۲۵-۰۲-۱۸ (سالار خان)
- نسخه اولیه.