زمانی که ArTextureUpdateMode
روی AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER
تنظیم شود، ARCore با فراخوانی 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 از بافر سخت افزاری استفاده کنید
برای مثالی از نحوه ارائه یک برنامه AR با استفاده از Vulkan به vulkan_handler.cc
مراجعه کنید.
دستگاه های پشتیبانی شده
پشتیبانی از رندر Vulkan فقط در سطوح Android API 27 و بالاتر در دسترس است. علاوه بر این، دستگاه باید از افزونه VK_ANDROID_external_memory_android_hardware_buffer
پشتیبانی کند.
Vulkan را در مانیفست برنامه خود الزامی کنید
Google Play از <uses-feature>
اعلامشده در مانیفست برنامه شما استفاده میکند تا برنامه شما را از دستگاههایی که الزامات ویژگیهای سختافزاری و نرمافزاری آن را برآورده نمیکنند فیلتر کند. دستگاههایی که از Vulkan 1.0 استفاده میکنند ممکن است از برنامه افزودنی مورد نیاز پشتیبانی نکنند ، اما دستگاههای سازگار با Vulkan 1.1 باید برنامه افزودنی لازم را که از Android 10 شروع میشود (سطح API 29) داشته باشند.