כשהערך בשדה 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
ב-vulkan_handler.cc
מוצגת דוגמה לעיבוד של אפליקציית AR באמצעות Vulkan.
מכשירים נתמכים
תמיכה ברינדור Vulkan זמינה רק ברמות API 27 ומעלה ב-Android. בנוסף, המכשיר צריך לתמוך בתוסף VK_ANDROID_external_memory_android_hardware_buffer
.
נדרש Vulkan במניפסט של האפליקציה
ב-Google Play נעשה שימוש בערך <uses-feature>
שהוצהר בקובץ המניפסט של האפליקציה, כדי לסנן
את האפליקציה ממכשירים שלא עומדים בדרישות של תכונות החומרה והתוכנה.
יכול להיות שמכשירים שמשתמשים ב-Vulkan 1.0 לא יתמכו בתוסף הנדרש, אבל מכשירים שתואמים ל-Vulkan 1.1 חייבים להתקין את התוסף הנדרש החל מ-Android 10 (רמת API 29).