عرض تطبيق الواقع المعزّز باستخدام Vulkan على Android NDK (C)

عند ضبط ArTextureUpdateMode على AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER، سيوفّر ARCore مخزنًا مؤقتًا لأجهزة Android عند استدعاء ArSession_update(). يمكن ربط هذا المخزن المؤقت للأجهزة بـ Vulkan VkImage.

عرض نموذج التطبيق

يتم توضيح إمكانية عرض Vulkan في نموذج تطبيق hello_ar_vulkan_c.

تفعيل وضع إخراج المخزن المؤقت للأجهزة

تحدِّد ArTextureUpdateMode التي تم ضبطها كيفية تعديل ARCore لزخرفة الكاميرا. عند ضبط السياسة على AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER، سيوفّر ARCore صورة الكاميرا من خلال AHardwareBuffer.

ضبط الجلسة لاستخدام AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER:

ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);
ArConfig_setTextureUpdateMode(ar_session, ar_config,
                              AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);
ArConfig_destroy(ar_config);

الحصول على المخزن المؤقت للأجهزة

عند تفعيل AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER، استخدِم ArFrame_getHardwareBuffer() للحصول على المخزن المؤقت للأجهزة:

void* native_hardware_buffer = NULL;
ArFrame_getHardwareBuffer(ar_session, ar_frame, &native_hardware_buffer);

if ((int64_t)native_hardware_buffer == 0) {
  // The hardware buffer isn't ready yet.
  return;
}

استخدام المخزن المؤقت للأجهزة أثناء عرض Vulkan

يُرجى الانتقال إلى vulkan_handler.cc للاطّلاع على مثال حول كيفية عرض تطبيق الواقع المعزّز باستخدام Vulkan.

الأجهزة المتوافقة

لا يتوفّر دعم عرض Vulkan إلا على مستويات واجهة برمجة تطبيقات Android 27 أعلاه. بالإضافة إلى ذلك، يجب أن يتيح الجهاز استخدام الإضافة "VK_ANDROID_external_memory_android_hardware_buffer".

يجب توفُّر Vulkan في بيان تطبيقك.

يستخدم Google Play اللغة <uses-feature> الموضَّحة في بيان التطبيق لفلترة بياناتك. تطبيق من أجهزة لا تستوفي متطلبات ميزات الأجهزة والبرامج. قد لا تتوافق الأجهزة التي تستخدم Vulkan 1.0 مع الإضافة المطلوبة، ولكن قد لا تكون متوافقة مع الأجهزة. متوافقة مع Vulkan 1.1 يجب أن تتضمّن الإضافة المطلوبة التي تبدأ في Android 10 (مستوى واجهة برمجة التطبيقات 29).