عرض تطبيق الواقع المعزّز باستخدام 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 إلا في الإصدارات 27 من واجهة برمجة التطبيقات لنظام التشغيل Android والإصدارات الأحدث. بالإضافة إلى ذلك، يجب أن يتوافق الجهاز مع إضافة VK_ANDROID_external_memory_android_hardware_buffer.

اشتراط استخدام Vulkan في بيان تطبيقك

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