XR_ANDROID_light_estimation_cubemap
Name String
XR_ANDROID_light_estimation_cubemap
نوع الإضافة
إضافة مثيل
رقم الإضافة المسجَّل
722
المراجعة
1
حالة التصديق
لم تتم المصادقة
الاعتماديات على الإضافات والإصدارات
XR_ANDROID_light_estimation
تاريخ آخر تعديل
2025-08-06
حالة عنوان IP
ما مِن مطالبات معروفة بشأن الملكية الفكرية.
المساهمون
"سالار خان"، Google
"سكوت تشونغ"، Google
"جاريد فايندر"، Google
"سبنسر كوين"، Google
"ليفانا تشين"، Google
"نيهاف جاين"، Google
"يورغن ستورم"، Google
نظرة عامة
تستند هذه الإضافة إلى إضافة XR_ANDROID_light_estimation الأساسية. تتيح هذه الميزة الحصول على تقديرات إضاءة مكعبة، ما يوفّر تقديرات أكثر تفصيلاً بشأن الإضاءة في البيئة المحيطة.
ملاحظة
آلية الحصول على بيانات تقدير الإضاءة هي نفسها المستخدَمة في الإضافة الأساسية، باستثناء أنّه يجب ربط XrCubemapLightEstimatorCreateInfoANDROID بـ XrLightEstimatorCreateInfoANDROID عند إنشاء معرّف أداة تقدير الإضاءة.
فحص إمكانات النظام
typedef struct XrSystemCubemapLightEstimationPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsCubemapLightEstimation;
} XrSystemCubemapLightEstimationPropertiesANDROID;
أوصاف الأعضاء
typeهو XrStructureType لهذه البنية.nextهوNULLأو مؤشر إلى البنية التالية في سلسلة البنية. لم يتم تحديد أي بنى من هذا النوع في OpenXR الأساسية أو في هذه الإضافة.-
supportsCubemapLightEstimationهوXrBool32، ما يشير إلى ما إذا كان النظام الحالي يتيح تقدير الإضاءة باستخدام خريطة المكعب.
يمكن لأحد التطبيقات التحقّق مما إذا كان النظام قادرًا على توفير تقدير الإضاءة باستخدام خريطة المكعبات من خلال توسيع XrSystemProperties باستخدام بنية XrSystemCubemapLightEstimationPropertiesANDROID عند استدعاء xrGetSystemProperties .
إذا عرض وقت التشغيل XR_FALSE للسمة supportsCubemapLightEstimation وتم ربط XrCubemapLightEstimatorCreateInfoANDROID بـ XrLightEstimatorCreateInfoANDROID، يجب أن يعرض وقت التشغيل XR_ERROR_FEATURE_UNSUPPORTED من xrCreateLightEstimatorANDROID .
الاستخدام الصالح (الضمني)
- يجب تفعيل إضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrSystemCubemapLightEstimationPropertiesANDROID - يجب أن يكون
typeXR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID - يجب أن تكون قيمة
nextهيNULLأو مؤشرًا صالحًا إلى البنية التالية في سلسلة البِنى
الحصول على درجات دقة مكعبات الخرائط المتوافقة
XrResult xrEnumerateCubemapLightingResolutionsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t resolutionCapacityInput,
uint32_t* resolutionCountOutput,
uint32_t* resolutions);
أوصاف المَعلمات
instanceهو XrInstance تم إنشاؤه سابقًا.-
systemIdهوXrSystemIdالذي تم استرجاعه سابقًا بواسطة xrGetSystem للحصول على درجات دقة cubemap المتوافقة. resolutionCapacityInputهوuint32_tيشير إلى الحد الأقصى لعدد العناصر التي يمكن تخزينها في مصفوفةresolutions.resolutionCountOutputهو مؤشر إلىuint32_tيتم ضبطه بواسطة وقت التشغيل للإشارة إلى عدد العناصر التي كتبها وقت التشغيل في المصفوفةresolutions.-
resolutionsهو مجموعة منuint32_tيتم ملؤها في وقت التشغيل بدقة خرائط المكعبات المتوافقة.
تشير درجة دقة خريطة المكعب إلى عرض وارتفاع كل وجه من وجوه خريطة المكعب بالبكسل. 2-call idiom يمكن للتطبيق بعد ذلك اختيار استخدام إحدى درجات الدقة المتوافقة في XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution عند إنشاء معرّف أداة تقدير الإضاءة. يجب أن يخصّص التطبيق مقدارًا مناسبًا من الذاكرة لعناصر مخزن الصور المؤقتة في XrCubemapLightingDataANDROID استنادًا إلى درجة الدقة التي تم اختيارها وتنسيق الألوان.
الاستخدام الصالح (الضمني)
- يجب تفعيل إضافة
XR_ANDROID_light_estimation_cubemapقبل استدعاء xrEnumerateCubemapLightingResolutionsANDROID - يجب أن يكون
instanceمقبض XrInstance صالحًا - يجب أن يكون
resolutionCountOutputمؤشرًا إلى قيمةuint32_t - إذا لم يكن
resolutionCapacityInputهو0،resolutionsيجب أن يكون مؤشرًا إلى مصفوفة من قيمresolutionCapacityInputuint32_t
رموز الإرجاع
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
الحصول على تنسيقات ألوان مكعبات الصور المتوافقة
يحدّد التعداد XrCubemapLightingColorFormatANDROID لوقت التشغيل تنسيق ألوان إضاءة cubemap المطلوب استخدامه.
typedef enum XrCubemapLightingColorFormatANDROID {
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID = 1,
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID = 2,
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID = 3,
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrCubemapLightingColorFormatANDROID;
تحمل القيم المُعدّدة المعاني التالية:
وصف التعداد
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID
تنسيق ألوان يتضمّن 3 قنوات، وكل قناة هي قيمة نقطة عائمة بتنسيق 32 بت.
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID
تنسيق ألوان يتضمّن 4 قنوات، وكل قناة هي قيمة نقطة عائمة بتنسيق 32 بت.
XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID
تنسيق ألوان يتضمّن 4 قنوات، حيث تكون كل قناة عبارة عن قيمة نقطة عائمة 16 بت.
XrResult xrEnumerateCubemapLightingColorFormatsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t colorFormatCapacityInput,
uint32_t* colorFormatCountOutput,
XrCubemapLightingColorFormatANDROID* colorFormats);
أوصاف المَعلمات
instanceهو XrInstance تم إنشاؤه سابقًا.-
systemIdهوXrSystemIdالذي تم استرجاعه سابقًا بواسطة xrGetSystem للحصول على درجات دقة cubemap المتوافقة. colorFormatCapacityInputهوuint32_tيشير إلى الحد الأقصى لعدد العناصر التي يمكن تخزينها في مصفوفةcolorFormats.colorFormatCountOutputهو مؤشر إلىuint32_tيتم ضبطه بواسطة وقت التشغيل للإشارة إلى عدد العناصر التي كتبها وقت التشغيل في المصفوفةcolorFormats.-
colorFormatsهي مصفوفة من XrCubemapLightingColorFormatANDROID التي تتم تعبئتها في وقت التشغيل بتنسيقات ألوان cubemap المتوافقة.
عبارة ذات استدعاءَين يمكن للتطبيق بعد ذلك اختيار استخدام إحدى صيغ الألوان المتوافقة في XrCubemapLightEstimatorCreateInfoANDROID :: colorFormat عند إنشاء معرّف أداة تقدير الإضاءة. يجب أن يخصّص التطبيق مقدارًا مناسبًا من الذاكرة لعناصر مخزن الصور المؤقت في XrCubemapLightingDataANDROID استنادًا إلى تنسيق الألوان الذي تم اختياره.
الاستخدام الصالح (الضمني)
- يجب تفعيل الإضافة
XR_ANDROID_light_estimation_cubemapقبل استدعاء xrEnumerateCubemapLightingColorFormatsANDROID - يجب أن يكون
instanceمقبض XrInstance صالحًا - يجب أن يكون
colorFormatCountOutputمؤشرًا إلى قيمةuint32_t - إذا لم يكن
colorFormatCapacityInputهو0،colorFormatsيجب أن يكون مؤشرًا إلى مصفوفة من قيمcolorFormatCapacityInputXrCubemapLightingColorFormatANDROID
رموز الإرجاع
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
إنشاء معرّف لتقدير الإضاءة باستخدام خريطة مكعبة
typedef struct XrCubemapLightEstimatorCreateInfoANDROID {
XrStructureType type;
const void* next;
uint32_t cubemapResolution;
XrCubemapLightingColorFormatANDROID colorFormat;
XrBool32 reproject;
} XrCubemapLightEstimatorCreateInfoANDROID;
أوصاف الأعضاء
typeهو XrStructureType لهذه البنية.nextهوNULLأو مؤشر إلى البنية التالية في سلسلة البنية.-
cubemapResolutionهوuint32_tيشير إلى دقة إضاءة cubemap المطلوب استخدامها. -
colorFormatهو XrCubemapLightingColorFormatANDROID يشير إلى تنسيق الألوان لبيانات إضاءة cubemap التي سيتم استخدامها. -
reprojectهيXrBool32تشير إلى ما إذا كان يجب إعادة عرض إضاءة cubemap إلى مساحة التطبيق الأساسية.
يصف البنية XrCubemapLightEstimatorCreateInfoANDROID المعلومات اللازمة لإنشاء معرّف XrLightEstimatorANDROID يكون قادرًا على تقديم تقديرات إضاءة cubemap. يجب ضبط العضو cubemapResolution في XrCubemapLightEstimatorCreateInfoANDROID على إحدى درجات الدقة التي تعرضها الدالة xrEnumerateCubemapLightingResolutionsANDROID. يجب ضبط العضو colorFormat في XrCubemapLightEstimatorCreateInfoANDROID على أحد تنسيقات الألوان التي تعرضها الدالة xrEnumerateCubemapLightingColorFormatsANDROID. إذا لم يتم ضبط دقة التطبيق على إحدى درجات الدقة المتوافقة أو تنسيق الألوان على أحد تنسيقات الألوان المتوافقة، يجب أن تعرض وقت التشغيل القيمة XR_ERROR_FEATURE_UNSUPPORTED من xrCreateLightEstimatorANDROID.
الاستخدام الصالح (الضمني)
- يجب تفعيل الإضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrCubemapLightEstimatorCreateInfoANDROID - يجب أن يكون
typeXR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID - يجب أن تكون قيمة
nextهيNULLأو مؤشرًا صالحًا إلى البنية التالية في سلسلة البِنى - يجب أن تكون قيمة
colorFormatقيمة صالحة XrCubemapLightingColorFormatANDROID
تقديرات الإضاءة في الخريطة المكعبة
typedef struct XrCubemapLightingDataANDROID {
XrStructureType type;
void* next;
XrLightEstimateStateANDROID state;
uint32_t imageBufferSize;
uint8_t* imageBufferRight;
uint8_t* imageBufferLeft;
uint8_t* imageBufferTop;
uint8_t* imageBufferBottom;
uint8_t* imageBufferFront;
uint8_t* imageBufferBack;
XrQuaternionf rotation;
XrTime centerExposureTime;
} XrCubemapLightingDataANDROID;
أوصاف الأعضاء
typeهو XrStructureType لهذه البنية.nextهوNULLأو مؤشر إلى البنية التالية في سلسلة البنية. البُنى الصالحة هي XrAmbientLightANDROID وXrSphericalHarmonicsANDROID وXrDirectionalLightANDROID .-
stateهو XrLightEstimateStateANDROID الذي يمثّل حالة تقدير الإضاءة. imageBufferSizeهوuint32_tيشير إلى حجم البايت لكل مخزن مؤقت لصورة وجه في خريطة المكعب.-
imageBufferRightهو مخزن مؤقتuint8_tيحتوي على صورة الوجه الأيمن لخريطة المكعب. -
imageBufferLeftهو مخزن مؤقتuint8_tيحتوي على صورة الوجه الأيسر لخريطة المكعب. -
imageBufferTopهو مخزن مؤقتuint8_tيحتوي على صورة الوجه العلوي لخريطة المكعب. -
imageBufferBottomهو مخزن مؤقتuint8_tيحتوي على صورة الوجه السفلي لخريطة المكعب. -
imageBufferFrontهو مخزن مؤقتuint8_tيحتوي على صورة الوجه الأمامي لخريطة المكعب. -
imageBufferBackهو مخزن مؤقتuint8_tيحتوي على صورة الوجه الخلفي لخريطة المكعب. -
rotationهو XrQuaternionf يشير إلى دوران خريطة المكعب. -
centerExposureTimeهوXrTimeيشير إلى الوقت الذي تم فيه التقاط خريطة المكعب.
يمكن ربط هذه البنية ببنية XrLightEstimateANDROID . يجب أن يملأ وقت التشغيل هذه البنية في xrGetLightEstimateANDROID فقط إذا تم استخدام XrCubemapLightEstimatorCreateInfoANDROID لإنشاء معرّف أداة تقدير الإضاءة. يجب أن يخصّص التطبيق مقدار الذاكرة المناسب لمخازن الصور المؤقتة التي تعتمد على القيم التي تم ضبطها في XrCubemapLightEstimatorCreateInfoANDROID :: cubemapResolution وXrCubemapLightEstimatorCreateInfoANDROID :: colorFormat عند إنشاء معرّف أداة تقدير الإضاءة. يجب أن يضبط التطبيق XrCubemapLightingDataANDROID :: imageBufferSize على سعة كل مخزن مؤقت لصورة الوجه بالبايت. إذا كان التطبيق لا يستخدم تقدير الإضاءة في خريطة المكعب أو إذا لم يكن XrCubemapLightingDataANDROID :: imageBufferSize كبيرًا بما يكفي لملء مخازن الصور المؤقتة في وقت التشغيل، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: state على XR_LIGHT_ESTIMATE_STATE_INVALID_ANDROID .
إذا ضبطت مجموعة التطبيقات XrCubemapLightEstimatorCreateInfoANDROID :: reproject على XR_TRUE عند إنشاء معرّف أداة تقدير الإضاءة، يجب أن يضبط وقت التشغيل XrCubemapLightingDataANDROID :: rotation على دوران الهوية وأن يضمن إعادة عرض خريطة المكعب الدوّارة الداخلية على وجوه خريطة مكعب الهوية في مساحة قاعدة التطبيق.
تخطيط مكعّب الإضاءة الخريطي هو نفسه تخطيط مكعّب OpenGL الخريطي، كما هو موضّح في الصورة التالية
الشكل 24 تنسيق المكعّب
الاستخدام الصالح (الضمني)
- يجب تفعيل الإضافة
XR_ANDROID_light_estimation_cubemapقبل استخدام XrCubemapLightingDataANDROID - يجب أن يكون
typeXR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID - يجب أن تكون قيمة
nextهيNULLأو مؤشرًا صالحًا إلى البنية التالية في سلسلة البِنى - يجب أن تكون قيمة
stateقيمة صالحة XrLightEstimateStateANDROID - يجب أن يكون
imageBufferRightمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن يكون
imageBufferLeftمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن يكون
imageBufferTopمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن يكون
imageBufferBottomمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن يكون
imageBufferFrontمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن يكون
imageBufferBackمؤشرًا إلى مصفوفة من قيمimageBufferSizeuint8_t - يجب أن تكون قيمة المَعلمة
imageBufferSizeأكبر من0
مثال على الرمز البرمجي لتقدير الإضاءة
يوضّح نموذج الرمز البرمجي التالي كيفية الحصول على جميع كميات تقدير الإضاءة الممكنة من وقت التشغيل
XrSession session; // Created at app startup
XrInstance instance; // Created at app startup
XrSpace appSpace; // Created previously.
XrSystemId systemId; // Retrieved previously by xrGetSystem
PFN_xrCreateLightEstimatorANDROID xrCreateLightEstimatorANDROID; // Created previously.
PFN_xrDestroyLightEstimatorANDROID xrDestroyLightEstimatorANDROID; // Created previously.
PFN_xrGetLightEstimateANDROID xrGetLightEstimateANDROID; // Created previously.
PFN_xrEnumerateCubemapLightingResolutionsANDROID xrEnumerateCubemapLightingResolutionsANDROID; // Created previously.
PFN_xrEnumerateCubemapLightingColorFormatsANDROID xrEnumerateCubemapLightingColorFormatsANDROID; // Created previously.
XrSystemCubemapLightEstimationPropertiesANDROID props = {
.type = XR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID};
XrSystemProperties base = {.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &props};
CHK_XR(xrGetSystemProperties(instance, systemId, &base));
if (!props.supportsCubemapLightEstimation) {
// Cubemap light estimation is not supported
}
uint32_t cubemapResolution = 0;
std::vector<uint32_t> supportedCubemapResolutions;
uint32_t resolutionCount;
CHK_XR(xrEnumerateCubemapLightingResolutionsANDROID(
instance, systemId, 0, &resolutionCount, nullptr));
supportedCubemapResolutions.resize(resolutionCount);
if (resolutionCount == 0) {
// No cubemap lighting supported
} else {
CHK_XR(xrEnumerateCubemapLightingResolutionsANDROID(
instance, systemId, 0, &resolutionCount, supportedCubemapResolutions.data()));
cubemapResolution = supportedCubemapResolutions[0];
}
uint32_t pixelCount = cubemapResolution * cubemapResolution;
XrCubemapLightingColorFormatANDROID colorFormat;
std::vector<XrCubemapLightingColorFormatANDROID> supportedColorFormats;
uint32_t colorFormatCount;
CHK_XR(xrEnumerateCubemapLightingColorFormatsANDROID(
instance, systemId, 0, &colorFormatCount, nullptr));
supportedColorFormats.resize(colorFormatCount);
if (colorFormatCount == 0) {
// No supported color formats for cubemap lighting. Cannot use cubemap
// light estimation.
} else {
CHK_XR(xrEnumerateCubemapLightingColorFormatsANDROID(
instance, systemId, 0, &colorFormatCount, supportedColorFormats.data()));
colorFormat = supportedColorFormats[0];
}
uint32_t pixelSize = 0;
switch (colorFormat) {
case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32_SFLOAT_ANDROID:
pixelSize = 3 * sizeof(float);
break;
case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R32G32B32A32_SFLOAT_ANDROID:
pixelSize = 4 * sizeof(float);
break;
case XR_CUBEMAP_LIGHTING_COLOR_FORMAT_R16G16B16A16_SFLOAT_ANDROID:
pixelSize = 4 * sizeof(uint16_t);
break;
default:
// Should not happen since the color format was validated previously.
break;
}
uint32_t perFaceImageBufferSize = pixelCount * pixelSize;
XrLightEstimatorANDROID estimator;
XrCubemapLightEstimatorCreateInfoANDROID cubemapCreateInfo = {
.type = XR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID,
.cubemapResolution = cubemapResolution,
.colorFormat = colorFormat,
.reproject = XR_TRUE
};
XrLightEstimatorCreateInfoANDROID basicCreateInfo = {
.type = XR_TYPE_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID,
.next = &cubemapCreateInfo};
CHK_XR(xrCreateLightEstimatorANDROID(session, &basicCreateInfo, &estimator));
std::vector<uint8_t> cubemapBuffer(perFaceImageBufferSize * 6); // 6 faces * perFaceImageBufferSize
// Every frame
XrTime updateTime; // Time used for the current frame's simulation update.
XrLightEstimateGetInfoANDROID info = {
.type = XR_TYPE_LIGHT_ESTIMATE_GET_INFO_ANDROID,
.space = appSpace,
.time = updateTime,
};
XrCubemapLightingDataANDROID cubemap = {
.type = XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID,
.next = nullptr,
.imageBufferSize = perFaceImageBufferSize,
.imageBufferRight = cubemapBuffer.data() + 0 * perFaceImageBufferSize,
.imageBufferLeft = cubemapBuffer.data() + 1 * perFaceImageBufferSize,
.imageBufferTop = cubemapBuffer.data() + 2 * perFaceImageBufferSize,
.imageBufferBottom = cubemapBuffer.data() + 3 * perFaceImageBufferSize,
.imageBufferFront = cubemapBuffer.data() + 4 * perFaceImageBufferSize,
.imageBufferBack = cubemapBuffer.data() + 5 * perFaceImageBufferSize,
};
XrDirectionalLightANDROID directionalLight = {
.type = XR_TYPE_DIRECTIONAL_LIGHT_ANDROID,
.next = &cubemap,
};
XrSphericalHarmonicsANDROID totalSh = {
.type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
.next = &directionalLight,
.kind = XR_SPHERICAL_HARMONICS_KIND_TOTAL_ANDROID,
};
XrSphericalHarmonicsANDROID ambientSh = {
.type = XR_TYPE_SPHERICAL_HARMONICS_ANDROID,
.next = &totalSh,
.kind = XR_SPHERICAL_HARMONICS_KIND_AMBIENT_ANDROID,
};
XrAmbientLightANDROID ambientLight = {
.type = XR_TYPE_AMBIENT_LIGHT_ANDROID,
.next = &ambientSh,
};
XrLightEstimateANDROID estimate = {
.type = XR_TYPE_LIGHT_ESTIMATE_ANDROID,
.next = &ambientLight,
};
XrResult result = xrGetLightEstimateANDROID(estimator, &info, &estimate);
if (result == XR_SUCCESS &&
estimate.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
// use cubemap, directionalLight, totalSh, ambientSh, and
// ambientLight if each struct has a valid state field
if (cubemap.state == XR_LIGHT_ESTIMATE_STATE_VALID_ANDROID) {
// use cubemap
if (cubemapCreateInfo.reproject == XR_TRUE) {
XrQuaternionf identityQuaternion = {0.0f, 0.0f, 0.0f, 1.0f};
assert(memcmp(&cubemap.rotation, &identityQuaternion, sizeof(XrQuaternionf)) == 0);
}
}
}
// When you want to disable light estimation
CHK_XR(xrDestroyLightEstimatorANDROID(estimator));
الأوامر الجديدة
المنشآت الجديدة
تمديد XrLightEstimateANDROID :
تمديد XrSystemProperties :
عمليات التعداد الجديدة
ثوابت التعداد الجديدة
XR_ANDROID_LIGHT_ESTIMATION_CUBEMAP_EXTENSION_NAMEXR_ANDROID_light_estimation_cubemap_SPEC_VERSIONتوسيع XrStructureType :
XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROIDXR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROIDXR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID
المشاكل
سجلّ التعديلات
النسخة 1، 2025-12-05 (سار خان)
- الوصف الأوّلي للإضافة