เมื่อตั้งค่า Config.TextureUpdateMode
เป็น TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
แล้ว ARCore จะส่งบัฟเฟอร์ฮาร์ดแวร์ของ Android เมื่อมีการเรียกใช้ Session.update()
บัฟเฟอร์ของฮาร์ดแวร์นี้สามารถเชื่อมโยงกับ Vulkan VkImage
ดูแอปพลิเคชันตัวอย่าง
การรองรับการแสดงผล Vulkan จะสาธิตอยู่ในแอป Hello_ar_vulkan_c ตัวอย่าง
เปิดใช้โหมดเอาต์พุตของบัฟเฟอร์ฮาร์ดแวร์
Config.TextureUpdateMode
ที่กำหนดค่าไว้จะกำหนดวิธีที่ ARCore จะอัปเดตพื้นผิวกล้อง เมื่อตั้งค่าเป็น TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
ARCore จะส่งรูปภาพจากกล้องผ่าน HardwareBuffer
กำหนดค่าเซสชันเพื่อใช้ TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
ดังนี้
Java
Config config = session.getConfig(); config.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER); session.configure(config);
Kotlin
session.configure( session.config.apply { textureUpdateMode = Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER } )
รับบัฟเฟอร์ของฮาร์ดแวร์
เมื่อเปิดใช้ TextureUpdateMode.EXPOSE_HARDWARE_BUFFER
ให้ใช้ Frame.getHardwareBuffer()
เพื่อรับบัฟเฟอร์ของฮาร์ดแวร์ ดังนี้
Java
try { HardwareBuffer buffer = frame.getHardwareBuffer(); // Use the buffer object in your rendering. } catch (NotYetAvailableException e) { // The hardware buffer is not ready yet. }
Kotlin
try { val buffer = frame.hardwareBuffer // Use the buffer object in your rendering. } catch (e: NotYetAvailableException) { // The hardware buffer is not ready yet. }
ใช้บัฟเฟอร์ของฮาร์ดแวร์ระหว่างการแสดงภาพ Vulkan
ดูตัวอย่างวิธีแสดงผลแอปพลิเคชัน AR โดยใช้ Vulkan ได้ที่ vulkan_handler.cc
อุปกรณ์ที่รองรับ
การรองรับการแสดงผล Vulkan มีเฉพาะใน API ของ Android ระดับ 27 และ
ที่ด้านบน นอกจากนี้ อุปกรณ์ดังกล่าวต้องรองรับส่วนขยาย VK_ANDROID_external_memory_android_hardware_buffer
ด้วย
ต้องใช้ Vulkan ในไฟล์ Manifest ของแอป
Google Play ใช้ <uses-feature>
ที่ประกาศไว้ในไฟล์ Manifest ของแอปเพื่อกรอง
จากอุปกรณ์ที่ไม่เป็นไปตามข้อกำหนดด้านฟีเจอร์ด้านฮาร์ดแวร์และซอฟต์แวร์
อุปกรณ์ที่ใช้ Vulkan 1.0 อาจไม่สนับสนุนส่วนขยายที่จำเป็น แต่อุปกรณ์
ใช้ร่วมกับ Vulkan 1.1 ได้ ต้องมีส่วนขยายที่จำเป็นตั้งแต่ Android 10 (API ระดับ 29)