Vulkan の設定

このドキュメントでは、いくつかのサンプルアプリのダウンロード、コンパイル、実行を通して、Vulkan グラフィック ライブラリを使い始める方法について説明します。

始める前に、適切なバージョンのハードウェアとプラットフォームが揃っていることをご確認ください。Vulkan をサポートし、Android API レベル 24 以上を搭載したデバイスを使用する必要があります。

Android のバージョンを確認するには、[設定] メニューに移動し、[<デバイス名>について] > [Android バージョン] を選択します。 適切なバージョンのハードウェアとプラットフォームをセットアップしていることを確認したら、必要なソフトウェアをダウンロードできます。

ダウンロード

まず、いくつかのツールとその他のソフトウェアをダウンロードする必要があります。Windows ホスト上では、ツールとソースコードを深い階層のファイルパスに保存しないようおすすめします。これは Windows OS の一部のバージョンに存在するファイルパスの制約を回避するためです。

  1. Android Studio をダウンロードしていない場合は、こちらからダウンロードします。これには最新の Android SDK が含まれています。
  2. Android Studio 内から NDK をインストールするか、手動でダウンロードします。

インポート

このセクションでは、LunarG Vulkan©リポジトリをダウンロードし、API サンプル用の Android Studio プロジェクトを生成して、それらのプロジェクトを IDE にインポートします。

  1. ターミナルを開いて、開発ディレクトリにソースコードをダウンロードします。

    cd dev-directory
    git clone --recursive https://github.com/LunarG/VulkanSamples.git
    
  2. Android でのビルドの手順に従って、Android 用のサンプル プロジェクトを生成します。

    cd VulkanSamples/API-Samples
    cmake -DANDROID=ON -DABI_NAME=abi
    cd android
    python3 compile_shaders.py
    

    サポートされている ABI には次のものがあります。

    • armeabi-v7a
    • arm64-v8a
    • x86
    • x86_64
  3. 環境変数を設定して、Android NDK と SDK へのパスを指定します。

    export ANDROID_SDK_ROOT=/path/to/sdk-directory
    export ANDROID_NDK_HOME=/path/to/ndk-directory
    

    サンプルの現在の targetSdk バージョンは 26 であるため、SDK Manager でツールをアップデートする必要があります。

  4. Android Studio を開きます。[File] > [Open] を選択し、[VulkanSamples/API-Samples/android/build.gradle] を選択します。

[Project] ペインは図 1 のようなウィンドウです。

Android Studio にサンプルをインポートした後の [Project] ペイン

図 1. インポート後のサンプルを表示する [Project] ペイン

コンパイル

プロジェクトは、Android Studio 内またはコマンドラインでコンパイルできます。

Android Studio

  1. [File] > [Project Structure] を選択します。[SDK Location] を選択し、SDK と NDK の場所が設定されていることを確認します。
  2. Android Studio の [Project] パネルで対象のプロジェクトを選択します。
  3. [Build] メニューで [Make Module <モジュール名>] を選択するか、[Build APK] を選択して APK を生成します。
  4. 依存関係の問題をすべて解決してコンパイルします。図 2 のように、コンパイルするプロジェクトを、構成のプルダウンから 1 つずつ選択できます。
  5. 構成のプルダウンから drawcube プロジェクトを選択する

    図 2. コンパイルするプロジェクトを 1 つずつ選択する

コマンドライン

コマンドラインからプロジェクトをビルドするには以下のコマンドを使用します(現在のディレクトリが VulkanSamples/API-Samples/android であることを確認してください)。

./gradlew build

実行

プロジェクトを実行するには、[Run] > [Run <プロジェクト名>] を選択して、実行する APK を指定します。

APK をデバッグするには、[Run] > [Debug <プロジェクト名>] を選択します。たとえば drawcube の場合は、15-draw_cube を実行します。

サンプルの多くは単純に個々の API の使い方を示すものであり、ほとんどは実行後に自動的に停止します。drawcube のサンプルは視覚的に面白いものの 1 つで、実行すると図 3 の画像が表示されます。

. 適切に実行されるとカラフルなキューブが表示される

図 3. 適切にコンパイルされたプログラムを実行して画像を表示する

ダイナミック ローダの使用

サンプルでは、vulkan_wrapper.h/cpp に定義されているダイナミック ローダーのヘルパー関数を使って、dlopen()dlsym() を使用して Vulkan API ポインタを取得しています。ポインタを vulkan.so に静的にリンクしてはいません。

このローダーを使用すると、コードは API レベル 23 以前のバージョンのプラットフォームにリンクすることが可能になります。以前のバージョンには vulkan.so 共有ライブラリが含まれていませんが、Vulkan API をサポートするデバイスで実行できます。

次のスニペットに、ダイナミック ローダの使い方を示します。

#include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
...
// Before any Vulkan API usage,
InitVulkan();

参考情報