В этом документе описывается, как начать работу с графической библиотекой Vulkan, загрузив, скомпилировав и запустив образец приложения Khronos©.
Предварительные условия
Прежде чем начать, убедитесь, что у вас подготовлено подходящее оборудование и версия платформы. Вам следует использовать устройство или эмулятор , поддерживающий Vulkan, под управлением Android 7.0 (Nougat), уровня API 24 или выше.
Вы можете подтвердить свою версию Android, перейдя в меню «Настройки» и выбрав «О телефоне» > «Версия Android» . Убедившись, что у вас настроено правильное оборудование и версия платформы, вы можете загрузить необходимое программное обеспечение.
Скачать
Прежде чем приступить к работе, необходимо загрузить несколько инструментов и другое программное обеспечение. Обратите внимание, что на хосте Windows рекомендуется избегать глубокой иерархии путей к файлам для инструментов и исходного кода; это необходимо для обхода ограничений пути к файлу в некоторых версиях ОС Windows.
- Если у вас еще нет Android Studio, скачайте ее . Сюда входит самая последняя версия Android SDK.
- Установите NDK и CMake из Android Studio или загрузите и установите их отдельно.
- Создайте и запустите пример Hello JNI, чтобы убедиться, что Android Studio работает правильно.
- Установите python3 и другие компоненты, перечисленные в build.md, для вашей хост-платформы.
Импорт
В этом разделе вы загружаете образец репозитория Khronos© Vulkan© , создаете проект Android gradle, а затем открываете его с помощью Android Studio IDE.
- Установите следующие переменные среды:
export ANDROID_HOME=/path/to/sdk-directory export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
- Добавьте CMake в $PATH, который используется для создания сценариев сборки Android:
export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
- Откройте терминал и загрузите исходный код в каталог разработки:
cd dev-directory git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
- Следуйте этим инструкциям (из Build.md ), чтобы создать пример проекта Android:
cd Vulkan-Samples ./scripts/generate.py android
- Откройте Android-студию. Выберите «Файл» > «Открыть» и выберите
Vulkan-Samples/build/android_gradle/build.gradle
. После загрузки проекта Android Studio вы должны увидеть что-то похожее на следующее:Рисунок 1. Пример проекта в Android Studio.
Скомпилировать
Все примеры в этом репозитории объединены в один проект Android. Чтобы скомпилировать проект, выполните одно из следующих действий:
- Чтобы просто скомпилировать исходные коды, используйте меню «Сборка» > «Создать проект» или нажмите сочетание клавиш Ctrl-F9 .
- Чтобы создать образец APK, выберите меню «Сборка» > «Сборка пакетов/APK» > «Сборка APK» .
Вы должны увидеть сообщение об успешной сборке в окне сборки Android Studio. В случае появления ошибок исправьте их и перекомпилируйте.
![Компиляция примера проекта с помощью Studio.](https://developer.android.com/ndk/guides/images/vk-guide-compile-project.png?authuser=9&hl=ru)
Выполнять
Прежде чем запускать пример проекта, убедитесь, что Android Studio распознает подключенное устройство Vulkan или эмулятор Android. Вы должны увидеть что-то вроде следующего:
![Подключение тестового устройства к Studio.](https://developer.android.com/ndk/guides/images/vk-guide-test-device.png?authuser=9&hl=ru)
Чтобы запустить проект, сделайте следующее:
- Используйте меню «Выполнить» > «Выполнить vulkan_sample» или нажмите кнопку «Выполнить».
на панели инструментов и дождитесь установки и запуска образца на подключенном устройстве.
- На подключенном устройстве Android разрешите необходимые запросы доступа.
- включите Разрешить доступ для управления всеми файлами , затем нажмите кнопку со стрелкой «Назад» , чтобы вернуться к образцу главного стартового экрана.
- разрешить доступ к диску:
Рисунок 4. Включите доступ к диску.
- Вы должны увидеть пример экрана главного меню, подобный следующему:
Рисунок 5. Пример главного меню. - Просмотрите список образцов и выберите несколько для запуска. Если вы новичок в разработке Vulkan, вы можете начать с примеров «API». Например, при нажатии «Hello Triangle» должен отображаться визуализированный треугольник, подобный следующему:
Рисунок 6. Пример Hello Triange.
Теперь ваша система разработки настроена для запуска примеров на тестовом устройстве.
Образцы Vulkan разработаны для нескольких операционных систем, в том числе для настольных компьютеров и мобильных устройств. Некоторые примеры в разделе «Производительность» , «Расширения » и «Инструменты» могут работать нестабильно и вызывать сбои на вашем устройстве. Это может быть связано с разными причинами, такими как:
- Конкретные функции Vulkan не были разработаны для Android.
- Ваша версия ОС Android не поддерживается.
- Возможности графического процессора вашей аппаратной платформы.
Исследовать
Раздел Java примера Vulkan является производным от класса NativeActivity . Он передает типичные события жизненного цикла приложения, такие как создание, запуск, остановка и уничтожение приложения, в код C/C++. В разделе примера C/C++ приведен пример платформы, реализующей функцию переключения подвыборок во время выполнения. На очень высоком уровне системные события/сообщения Android проходят следующий путь, чтобы достичь кода Vulkan примера приложения:
- Раздел Java
NativeSampleActivity
- Раздел
NativeSampleActivity
C/C++ - код
android_native_glue
-
android_main
- Пример структуры
- Код отдельного подвыборки
android_main
— это мост между NativeSampleActivity
и кодом приложения, который может стать для вас отправной точкой при использовании примера кода. Если вы просто хотите сосредоточиться на конкретных источниках Vulkan, вы можете изучить код в разделе Vulkan_Samples\samples
, который содержит следующее:
- Примеры категории «api».
- Образцы категории «производительность».
- Примеры категории «расширения».
- Образцы «оснастки».
Vulkan_Samples\shaders
— это дом для всех шейдеров.
Вы можете начать просматривать примеры категории «API», чтобы ознакомиться с основами использования Vulkan и примером структуры. Затем вы можете перейти к примерам категорий «Производительность» и «Расширения». Для кода шейдера вы можете использовать представление «Проект» в Android Studio.
![Треугольный шейдер.](https://developer.android.com/ndk/guides/images/vk-guide-shaders.png?authuser=9&hl=ru)
Дополнительные ресурсы
API Vulkan прошел через несколько версий, поэтому он совершенствуется. Комитет по стандартизации Vulkan и сообщество Vulkan создали богатый набор материалов по Vulkan, демонстрирующих использование API и лучшие практики. В следующем списке содержатся некоторые ресурсы для разработки приложений Vulkan:
Спецификация Вулкана. Группа Khronos поддерживает спецификацию Vulkan. Посетите домашнюю страницу Vulkan для получения полной спецификации, обучения, руководств и учебных пособий .
Слои проверки. Уровни проверки необходимы для разработки приложений. Подробности см. в слоях проверки Vulkan в документации Android .
Шадерк. Код Shaderc в NDK является нижестоящим по отношению к репозиторию Shaderc . Документацию по использованию и инструкции по получению последней версии см. в разделе Компиляторы шейдеров .