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 .

الاستخدام الصالح (الضمني)

الحصول على درجات دقة مكعبات الخرائط المتوافقة

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 يجب أن يكون مؤشرًا إلى مصفوفة من قيم resolutionCapacityInput uint32_t

رموز الإرجاع

ناجحة

  • XR_SUCCESS

فشل

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_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 يجب أن يكون مؤشرًا إلى مصفوفة من قيم colorFormatCapacityInput XrCubemapLightingColorFormatANDROID

رموز الإرجاع

ناجحة

  • XR_SUCCESS

فشل

  • XR_ERROR_FUNCTION_UNSUPPORTED
  • XR_ERROR_HANDLE_INVALID
  • XR_ERROR_INSTANCE_LOST
  • XR_ERROR_RUNTIME_FAILURE
  • XR_ERROR_SIZE_INSUFFICIENT
  • XR_ERROR_SYSTEM_INVALID
  • XR_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.

الاستخدام الصالح (الضمني)

تقديرات الإضاءة في الخريطة المكعبة

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 الخريطي، كما هو موضّح في الصورة التالية

تنسيق خريطة المكعبات لتقدير الإضاءة في XR ANDROID

الشكل 24 تنسيق المكعّب

الاستخدام الصالح (الضمني)

  • يجب تفعيل الإضافة XR_ANDROID_light_estimation_cubemap قبل استخدام XrCubemapLightingDataANDROID
  • يجب أن يكون type XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID
  • يجب أن تكون قيمة next هي NULL أو مؤشرًا صالحًا إلى البنية التالية في سلسلة البِنى
  • يجب أن تكون قيمة state قيمة صالحة XrLightEstimateStateANDROID
  • يجب أن يكون imageBufferRight مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن يكون imageBufferLeft مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن يكون imageBufferTop مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن يكون imageBufferBottom مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن يكون imageBufferFront مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_t
  • يجب أن يكون imageBufferBack مؤشرًا إلى مصفوفة من قيم imageBufferSize uint8_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));

الأوامر الجديدة

المنشآت الجديدة

عمليات التعداد الجديدة

ثوابت التعداد الجديدة

  • XR_ANDROID_LIGHT_ESTIMATION_CUBEMAP_EXTENSION_NAME
  • XR_ANDROID_light_estimation_cubemap_SPEC_VERSION
  • توسيع XrStructureType :

    • XR_TYPE_CUBEMAP_LIGHTING_DATA_ANDROID
    • XR_TYPE_CUBEMAP_LIGHT_ESTIMATOR_CREATE_INFO_ANDROID
    • XR_TYPE_SYSTEM_CUBEMAP_LIGHT_ESTIMATION_PROPERTIES_ANDROID

المشاكل

سجلّ التعديلات

  • النسخة 1، 2025-12-05 (سار خان)

    • الوصف الأوّلي للإضافة