عرض تطبيق الواقع المعزّز باستخدام Vulkan على حزمة تطوير البرامج (SDK) لنظام التشغيل Android (Kotlin/Java)
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
عند ضبط 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
للحصول على مثال على كيفية عرض تطبيق واقع معزّز باستخدام Vulkan.
الأجهزة المتوافقة
لا تتوفّر ميزة عرض Vulkan إلا في الإصدارات 27 من واجهة برمجة التطبيقات لنظام التشغيل Android والإصدارات الأحدث. بالإضافة إلى ذلك، يجب أن يتوافق الجهاز مع إضافة VK_ANDROID_external_memory_android_hardware_buffer
.
اشتراط استخدام Vulkan في بيان تطبيقك
يستخدم Google Play <uses-feature>
المُعلَن عنه في بيان تطبيقك لفلترة
تطبيقك من الأجهزة التي لا تستوفي متطلبات ميزات الأجهزة والبرامج.
قد لا تتوافق الأجهزة التي تستخدم Vulkan 1.0 مع الإضافة المطلوبة، ولكن يجب أن تتضمّن الأجهزة المتوافقة مع Vulkan 1.1 الإضافة المطلوبة اعتبارًا من Android 10 (المستوى 29 من واجهة برمجة التطبيقات).
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eARCore can provide the camera image as an Android hardware buffer for efficient Vulkan rendering when \u003ccode\u003eTextureUpdateMode.EXPOSE_HARDWARE_BUFFER\u003c/code\u003e is enabled.\u003c/p\u003e\n"],["\u003cp\u003eThis hardware buffer can be accessed using \u003ccode\u003eFrame.getHardwareBuffer()\u003c/code\u003e and bound to a Vulkan \u003ccode\u003eVkImage\u003c/code\u003e for rendering.\u003c/p\u003e\n"],["\u003cp\u003eVulkan rendering with ARCore requires Android API level 27 or higher and device support for the \u003ccode\u003eVK_ANDROID_external_memory_android_hardware_buffer\u003c/code\u003e extension.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003ehello_ar_vulkan_c\u003c/code\u003e sample app demonstrates how to implement Vulkan rendering with ARCore.\u003c/p\u003e\n"],["\u003cp\u003eTo ensure your app is only available on compatible devices, declare the Vulkan feature requirement in your app's manifest.\u003c/p\u003e\n"]]],["To utilize hardware buffer output, set `Config.TextureUpdateMode` to `EXPOSE_HARDWARE_BUFFER` during session configuration. This enables ARCore to provide a hardware buffer via `Session.update()`. Retrieve this buffer using `Frame.getHardwareBuffer()`. It can then be bound to a Vulkan `VkImage`. Vulkan rendering is demonstrated in the `hello_ar_vulkan_c` sample app. Support requires Android API level 27+, with the `VK_ANDROID_external_memory_android_hardware_buffer` extension and ensure your manifest declares Vulkan usage.\n"],null,["# Render your AR app using Vulkan on Android SDK (Kotlin/Java)\n\nWhen the [`Config.TextureUpdateMode`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode) is set to [`TextureUpdateMode.EXPOSE_HARDWARE_BUFFER`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode#expose_hardware_buffer), ARCore will provide an Android [hardware buffer](https://developer.android.com/ndk/reference/group/a-hardware-buffer) when [`Session.update()`](/ar/reference/java/com/google/ar/core/Session#update-) is called. This hardware buffer can be bound to a Vulkan [`VkImage`](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImage.html).\n\nView the sample application\n---------------------------\n\nVulkan rendering support is demonstrated in the [hello_ar_vulkan_c sample app](https://github.com/google-ar/arcore-android-sdk/tree/master/samples/hello_ar_vulkan_c).\n\nEnable the hardware buffer output mode\n--------------------------------------\n\nThe configured [`Config.TextureUpdateMode`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode) determines how ARCore will update the camera texture. When it is set to [`TextureUpdateMode.EXPOSE_HARDWARE_BUFFER`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode#expose_hardware_buffer), ARCore will provide the camera image through a [`HardwareBuffer`](https://developer.android.com/reference/android/hardware/HardwareBuffer).\n\nConfigure the session to use [`TextureUpdateMode.EXPOSE_HARDWARE_BUFFER`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode#expose_hardware_buffer): \n\n### Java\n\n```java\nConfig config = session.getConfig();\nconfig.setTextureUpdateMode(Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER);\nsession.configure(config);\n```\n\n### Kotlin\n\n```kotlin\nsession.configure(\n session.config.apply { textureUpdateMode = Config.TextureUpdateMode.EXPOSE_HARDWARE_BUFFER }\n)\n```\n| **Note:** When using [`TextureUpdateMode.EXPOSE_HARDWARE_BUFFER`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode#expose_hardware_buffer) on incompatible devices, [`Session.configure()`](/ar/reference/java/com/google/ar/core/Session#configure(com.google.ar.core.Config)) will fail and throw [`UnsupportedConfigurationException`](/ar/reference/java/com/google/ar/core/exceptions/UnsupportedConfigurationException).\n\nObtain the hardware buffer\n--------------------------\n\nWhen [`TextureUpdateMode.EXPOSE_HARDWARE_BUFFER`](/ar/reference/java/com/google/ar/core/Config.TextureUpdateMode#expose_hardware_buffer) is enabled, use [`Frame.getHardwareBuffer()`](/ar/reference/java/com/google/ar/core/Frame#getHardwareBuffer-) to get the hardware buffer: \n\n### Java\n\n```java\ntry {\n HardwareBuffer buffer = frame.getHardwareBuffer();\n // Use the buffer object in your rendering.\n} catch (NotYetAvailableException e) {\n // The hardware buffer is not ready yet.\n}\n```\n\n### Kotlin\n\n```kotlin\ntry {\n val buffer = frame.hardwareBuffer\n // Use the buffer object in your rendering.\n} catch (e: NotYetAvailableException) {\n // The hardware buffer is not ready yet.\n}\n```\n\nUse the hardware buffer during Vulkan rendering\n-----------------------------------------------\n\nSee [`vulkan_handler.cc`](https://github.com/google-ar/arcore-android-sdk/blob/master/samples/hello_ar_vulkan_c/app/src/main/cpp/vulkan_handler.cc) for an example of how to render an AR application using Vulkan.\n\nSupported devices\n-----------------\n\nVulkan rendering support is only available on Android API levels **27** and\nabove. Additionally, the device must support the `VK_ANDROID_external_memory_android_hardware_buffer` extension.\n\n### Require Vulkan in your app's manifest\n\nGoogle Play uses `\u003cuses-feature\u003e` declared in your app manifest to filter your\napp from devices that don't meet its hardware and software feature requirements.\nDevices using Vulkan 1.0 **might not** support the required extension, but devices\ncompatible with Vulkan 1.1 **must** have the required extension starting in Android 10 (API level 29)."]]