Начните работу с Вулканом

В этом документе описывается, как начать работу с графической библиотекой Vulkan, загрузив, скомпилировав и запустив образец приложения Khronos©.

Предварительные условия

Прежде чем начать, убедитесь, что у вас подготовлено подходящее оборудование и версия платформы. Вам следует использовать устройство или эмулятор , поддерживающий Vulkan, под управлением Android 7.0 (Nougat), уровня API 24 или выше.

Вы можете подтвердить свою версию Android, перейдя в меню «Настройки» и выбрав «О телефоне» > «Версия Android» . Убедившись, что у вас настроено правильное оборудование и версия платформы, вы можете загрузить необходимое программное обеспечение.

Скачать

Прежде чем приступить к работе, необходимо загрузить несколько инструментов и другое программное обеспечение. Обратите внимание, что на хосте Windows рекомендуется избегать глубокой иерархии путей к файлам для инструментов и исходного кода; это необходимо для обхода ограничений пути к файлу в некоторых версиях ОС Windows.

  1. Если у вас еще нет Android Studio, скачайте ее . Сюда входит самая последняя версия Android SDK.
  2. Установите NDK и CMake из Android Studio или загрузите и установите их отдельно.
  3. Создайте и запустите пример Hello JNI, чтобы убедиться, что Android Studio работает правильно.
  4. Установите python3 и другие компоненты, перечисленные в build.md, для вашей хост-платформы.

Импорт

В этом разделе вы загружаете образец репозитория Khronos© Vulkan© , создаете проект Android gradle, а затем открываете его с помощью Android Studio IDE.

  1. Установите следующие переменные среды:
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. Добавьте CMake в $PATH, который используется для создания сценариев сборки Android:
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. Откройте терминал и загрузите исходный код в каталог разработки:
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. Следуйте этим инструкциям (из Build.md ), чтобы создать пример проекта Android:
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. Откройте Android-студию. Выберите «Файл» > «Открыть» и выберите Vulkan-Samples/build/android_gradle/build.gradle . После загрузки проекта Android Studio вы должны увидеть что-то похожее на следующее:
    Импорт примера проекта в Studio.

    Рисунок 1. Пример проекта в Android Studio.

Скомпилировать

Все примеры в этом репозитории объединены в один проект Android. Чтобы скомпилировать проект, выполните одно из следующих действий:

  • Чтобы просто скомпилировать исходные коды, используйте меню «Сборка» > «Создать проект» или нажмите сочетание клавиш Ctrl-F9 .
  • Чтобы создать образец APK, выберите меню «Сборка» > «Сборка пакетов/APK» > «Сборка APK» .

Вы должны увидеть сообщение об успешной сборке в окне сборки Android Studio. В случае появления ошибок исправьте их и перекомпилируйте.

Компиляция примера проекта с помощью Studio.

Рисунок 2. Успешный образец сборки.

Выполнять

Прежде чем запускать пример проекта, убедитесь, что Android Studio распознает подключенное устройство Vulkan или эмулятор Android. Вы должны увидеть что-то вроде следующего:

Подключение тестового устройства к Studio.

Рисунок 3. Подключите тестовое устройство к Android Studio.

Чтобы запустить проект, сделайте следующее:

  1. Используйте меню «Выполнить» > «Выполнить vulkan_sample» или нажмите кнопку «Выполнить». на панели инструментов и дождитесь установки и запуска образца на подключенном устройстве.
  2. На подключенном устройстве Android разрешите необходимые запросы доступа.
    • включите Разрешить доступ для управления всеми файлами , затем нажмите кнопку со стрелкой «Назад» , чтобы вернуться к образцу главного стартового экрана.
    • разрешить доступ к диску:
      разрешение доступа к диску.

      Рисунок 4. Включите доступ к диску.

  3. Вы должны увидеть пример экрана главного меню, подобный следующему:
    пример главного меню.

    Рисунок 5. Пример главного меню.

  4. Просмотрите список образцов и выберите несколько для запуска. Если вы новичок в разработке 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.

Треугольный шейдер.

Рисунок 7. Исследование шейдера с помощью Studio.

Дополнительные ресурсы

API Vulkan прошел через несколько версий, поэтому он совершенствуется. Комитет по стандартизации Vulkan и сообщество Vulkan создали богатый набор материалов по Vulkan, демонстрирующих использование API и лучшие практики. В следующем списке содержатся некоторые ресурсы для разработки приложений Vulkan: