Kết xuất ứng dụng thực tế tăng cường bằng Vulkan trên Android NDK (C)

Khi bạn đặt ArTextureUpdateMode thành AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore sẽ cung cấp vùng đệm phần cứng Android khi gọi ArSession_update(). Vùng đệm phần cứng này có thể được liên kết với Vulkan VkImage.

Xem ứng dụng mẫu

Bạn có thể xem tính năng hỗ trợ kết xuất hình ảnh Vulkan trong ứng dụng mẫu hello_ar_vulkan_c.

Bật chế độ đầu ra vùng đệm phần cứng

ArTextureUpdateMode được định cấu hình sẽ xác định cách ARCore cập nhật kết cấu của máy ảnh. Khi bạn đặt chính sách này thành AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, ARCore sẽ cung cấp hình ảnh máy ảnh thông qua AHardwareBuffer.

Định cấu hình phiên để sử dụng 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);

Lấy vùng đệm phần cứng

Khi bật AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER, hãy dùng ArFrame_getHardwareBuffer() để tải vùng đệm phần cứng:

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

Sử dụng vùng đệm phần cứng trong quá trình kết xuất Vulkan

Hãy xem vulkan_handler.cc để biết ví dụ về cách kết xuất ứng dụng thực tế tăng cường bằng Vulkan.

Thiết bị được hỗ trợ

Tính năng hỗ trợ kết xuất hình ảnh Vulkan chỉ có trên API Android cấp 27 trở lên. Ngoài ra, thiết bị phải hỗ trợ tiện ích VK_ANDROID_external_memory_android_hardware_buffer.

Yêu cầu Vulkan trong tệp kê khai của ứng dụng

Google Play sử dụng <uses-feature> được khai báo trong tệp kê khai ứng dụng để lọc ứng dụng khỏi các thiết bị không đáp ứng yêu cầu về tính năng phần cứng và phần mềm của ứng dụng. Các thiết bị sử dụng Vulkan 1.0 có thể không hỗ trợ tiện ích bắt buộc, nhưng các thiết bị tương thích với Vulkan 1.1 phải có phần mở rộng bắt buộc kể từ Android 10 (API cấp 29).