Merender aplikasi AR menggunakan Vulkan di Android NDK (C)

Jika ArTextureUpdateMode disetel ke AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore akan menyediakan buffer hardware Android saat ArSession_update() dipanggil. Buffering hardware ini dapat diikat dengan VkImage Vulkan.

Melihat aplikasi contoh

Dukungan rendering Vulkan ditunjukkan dalam aplikasi contoh hello_ar_vulkan_c.

Mengaktifkan mode output buffer hardware

ArTextureUpdateMode yang dikonfigurasi menentukan cara ARCore akan memperbarui tekstur kamera. Jika disetel ke AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore akan menyediakan gambar kamera melalui AHardwareBuffer.

Konfigurasikan sesi untuk menggunakan 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);

Mendapatkan buffer hardware

Saat AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER diaktifkan, gunakan ArFrame_getHardwareBuffer() untuk mendapatkan buffer hardware:

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;
}

Menggunakan buffer hardware selama rendering Vulkan

Lihat vulkan_handler.cc untuk mengetahui contoh cara merender aplikasi AR menggunakan Vulkan.

Perangkat yang didukung

Dukungan rendering Vulkan hanya tersedia pada Android API level 27 dan yang lebih tinggi. Selain itu, perangkat harus mendukung ekstensi VK_ANDROID_external_memory_android_hardware_buffer.

Mewajibkan Vulkan dalam manifes aplikasi Anda

Google Play menggunakan <uses-feature> yang dideklarasikan dalam manifes aplikasi untuk memfilter aplikasi dari perangkat yang tidak memenuhi persyaratan fitur hardware dan software. Perangkat yang menggunakan Vulkan 1.0 mungkin tidak mendukung ekstensi yang diperlukan, tetapi perangkat yang kompatibel dengan Vulkan 1.1 harus memiliki ekstensi yang diperlukan mulai Android 10 (API level 29).