Vulkan Tutorial (Development environment) 日本語訳

https://vulkan-tutorial.com/Development_environment

# 開発環境 (Development environment)

この章ではVulkanアプリケーションを開発するための環境をセットアップし、いくつかの有益なライブラリをインストールします。我々が使うツールはコンパイラを除けば全て、Windows、Linux、MaxOSで互換性があります。ただし、それらをインストールする手順は少し違うので、それぞれにわけて説明します。

## Windows

あなたがWindowsで開発しているなら、Visual Studioを使ってコンパイルしていると仮定します。C++17をサポートするために、あなたは Visual Studio 2017 か 2019 を使う必要があります。下記の解説はVS2017向けに書かれています。

### Vulkan SDK

Vulkanアプリケーションを開発するために最も重要なコンポーネントはSDKです。それはヘッダ、標準バリデーションレイヤ、デバッグツール、Vulkan関数のローダを含んでいます。ローダは実行時にドライバから関数を探します。もしGLEWに慣れ親しんでいるなら、OpenGLに対するGLEWと似たようなものだと思ってください。

SDKは[LunarGのウェブサイト](https://vulkan.lunarg.com/)から、ページ下部のボタンを押すとダウンロードできます。アカウントを作る必要はありませんが、作っておくと追加のドキュメントにアクセスできたり、あなたにとって有用かもしれません。
![](https://vulkan-tutorial.com/images/vulkan_sdk_download_buttons.png)
SDKをインストールする中で、インストールする場所に気をつけてください。まずはじめに私達がやることは、グラフィックスカードとドライバが、きちんとVulkanをサポートしているかどうか確かめることです。SDKをインストールしたディレクトリに移動し、`Bin`ディレクトリを開いて`vkcube.exe`デモを実行します。すると次のように表示されるはずです：
![](https://vulkan-tutorial.com/images/cube_demo.png)
エラーメッセージが表示された場合は、ドライバが最新であること、Vulkanランタイムが含まれていること、グラフィックスカードがサポートされていることを確認してください。主要ベンダーのドライバへのリンクは、[「はじめに」の章](https://vulkan-tutorial.com/Introduction)を参照してください。

このディレクトリには他にも役に立つプログラムがあります。それは`glslangValidator.exe`と`glslc.exe`で、人間が読めるGLSLからバイトコードへとコンパイルするときに使います。これについては[シェーダモジュール](https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Shader_modules)の章で深く見ていきます。`Bin`ディレクトリにはVulkanローダとバリデーションレイヤのバイナリも含まれており、`Lib`ディレクトリにはライブラリが含まれています。

最後に、Vulkanのヘッダファイルを格納した`Include`ディレクトリがあります。他のファイルについて見て回っても構いませんが、それらのファイルはこのチュートリアルでは必要ありません。

### GLFW

以前も述べたように、Vulkan自身はプラットフォーム不可知論者なAPIで、レンダリング結果を表示するためのウィンドウを作るツールは含まれていません。クロスプラットフォームというVulkanのアドバンテージを活かすためと、Win32の恐怖を避けるため、私たちはウィンドウを作るのに[GLFWライブラリ](http://www.glfw.org/)を使います。それはWindows,Linux,MacOSをサポートしています。[SDL](https://www.libsdl.org/)のように、同様の目的のライブラリは他にもありますが、GLFWの利点は、ウィンドウの作成以外にもVulkanのプラットフォーム特有のものを抽象化できることです。

[公式サイト](http://www.glfw.org/download.html)で最新のGLFWのリリースを見つけることができます。このチュートリアルでは64ビットバイナリバージョンを使いますが、もちろんあなたは32ビットバージョンを選択することもできます。その場合は、Vulkan SDK バイナリのディレクトリとして、`Lib`の代わりに`Lib32`をリンクするようにしなければいけません。ダウンロードが完了したら、アーカイブを好きな場所に展開してください。私はVisual Studioディレクトリの中に`Libraries`ディレクトリを作るようにしました。
![](https://vulkan-tutorial.com/images/glfw_directory.png)

### GLM

DirectX 12 とは違い、Vulkanは線形代数ライブラリを含んでいませんので、どこかからダウンロードしてくる必要があります。[GLM](http://glm.g-truc.net/)はグラフィックスAPIと共に使うために設計された良いライブラリで、OpenGLと一緒によく使われています。

GLMはヘッダオンリーライブラリなので、ただ[最新バージョン](https://github.com/g-truc/glm/releases)をダウンロードして便利な位置に配置するだけです。ディレクトリ構成は次のようなものになるでしょう。
![](https://vulkan-tutorial.com/images/library_directory.png)

### Visual Studioのセットアップ (Setting up Visual Studio)

必要なものを全てインストールしたので、Vulkan のための Visual Studio プロジェクトを立ち上げて、全てが上手く動いているか確かめる、ちょっとしたコードを書くことができます。

Visual Studio を起動して、プロジェクトの新規作成から`Windows Desktop Wizard`を選択し、名前を入力して`OK`ボタンを押します。
![](https://vulkan-tutorial.com/images/vs_new_cpp_project.png)

デバッグメッセージを出力する場所が必要なので、アプリケーションタイプに`Console Application (.exe)`が選択されていることを確認してください。そして`Empty Project`にチェックを入れて、Visual Studio がボイラープレートコードを追加することを防止してください。
![](https://vulkan-tutorial.com/images/vs_application_settings.png)

`OK`ボタンを押してプロジェクトを作成し、C++ソースファイルを追加してください。あなたは既にその方法を知っていると思いますが、念のためステップを以下に示しておきます。
![](https://vulkan-tutorial.com/images/vs_new_item.png)
![](https://vulkan-tutorial.com/images/vs_new_source_file.png)

それでは、以下のコードをファイルに追加してください。今は理解できなくても大丈夫です。我々はコンパイルとVulkanアプリケーションの実行ができることを確認したいだけです。次の章でスクラッチから始めます。

```cpp
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>

#include <iostream>

int main() {
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported\n";

    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;

    while(!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}
```
エラーを取り除くため、プロジェクトの設定を変更しましょう。設定を`Debug`と`Release`両方のモードに反映したいので、プロジェクトのプロパティを開き、`All Configurations`が選択されていることを確認します。
![](https://vulkan-tutorial.com/images/vs_open_project_properties.png)
![](https://vulkan-tutorial.com/images/vs_all_configs.png)

`C++ -> General -> Additional Include Directories`を選択し、ドロップダウンボックスから`<Edit...>`を押します。
![](https://vulkan-tutorial.com/images/vs_cpp_general.png)

VulkanとGLFW、GLMのヘッダのディレクトリを追加します。
![](https://vulkan-tutorial.com/images/vs_include_dirs.png)

次に、`Linker -> General`からライブラリのディレクトリエディタを開きます。
![](https://vulkan-tutorial.com/images/vs_link_settings.png)

そしてVulkanとGLFWのオブジェクトファイルの場所を追加します。
![](https://vulkan-tutorial.com/images/vs_link_dirs.png)

`Linker -> Input`の`Additional Dependencies`のドロップダウンボックスから`<Edit...>`を押します。
![](https://vulkan-tutorial.com/images/vs_link_input.png)

VulkanとGLFWのオブジェクトファイルの名前を入力します。
![](https://vulkan-tutorial.com/images/vs_dependencies.png)

最後に、コンパイラがC++17の機能をサポートするように変更します。
![](https://vulkan-tutorial.com/images/vs_cpp17.png)

これでプロジェクトのプロパティダイアログは閉じても大丈夫です。もし全て正しく行えていれば、エラーは表示されないようになったはずです。

最後に、64ビットモードでコンパイルされていることを確認します。
![](https://vulkan-tutorial.com/images/vs_build_mode.png)

`F5`を押してコンパイルと実行すると、次のようなコマンドプロンプトとウィンドウが表示されるはずです。
![](https://vulkan-tutorial.com/images/vs_test_window.png)

拡張(extensions)の数は0以外になるはずです。おめでとうございます。[Vulkanで遊ぶ](https://vulkan-tutorial.com/Drawing_a_triangle/Setup/Base_code)準備ができました！

## Linux

これらの説明は Ubuntu、Fedora、Arch Linux ユーザー向けになっていますが、パッケージマネージャ固有のコマンドを適切なものに置き換えることによって対応できるはずです。C++17をサポートしたコンパイラ(GCC 7+ または Clang 5+)が必要です。`make`もまた必要です。

### Vulkan Packages

LinuxでVulkanアプリケーションを開発するのに最も重要なコンポーネントは、Vulkanローダ、バリデーションレイヤ、そしてあなたのマシンでVulkanが使えるかどうかテストする、いくつかのコマンドラインユーティリティです。
* `sudo apt install vulkan-tools` または `sudo dnf install vulkan-tools`:最も重要なコマンドラインユーティリティである、`vulkaninfo` と `vkcube`。これらを実行することによって、あなたのマシンがVulkanをサポートしているか確認できます。
* `sudo apt install libvulkan-dev` または `sudo dnf install vulkan-loader-devel` : Vulkanローダをインストールします。ローダは実行時にドライバから関数を探します。もしGLEWに慣れ親しんでいるなら、OpenGLに対するGLEWと似たようなものだと思ってください。
* `sudo apt install vulkan-validationlayers-dev spirv-tools` または `sudo dnf install mesa-vulkan-devel vulkan-validation-layers-devel` : 標準バリデーションレイヤと必要なSPIR-Vツールをインストールします。これらはVulkanアプリケーションをデバッグするときに重要で、これについては後の章で議論します。

Arch Linux においては、`sudo pacman -S vulkan-devel`で上記の全ての必要なツールをインストールできます。

インストールに成功した場合、Vulkan部分の設定は完了です。忘れずに`vkcube`を実行し、以下のようなウィンドウがポップアップ表示されることを確認してください。
![](https://vulkan-tutorial.com/images/cube_demo_nowindow.png)
エラーメッセージが表示された場合は、ドライバが最新であること、Vulkanランタイムが含まれていること、グラフィックスカードがサポートされていることを確認してください。主要ベンダーのドライバへのリンクは、[「はじめに」の章](https://vulkan-tutorial.com/Introduction)を参照してください。

### GLFW

以前も述べたように、Vulkan自身はプラットフォーム不可知論者なAPIで、レンダリング結果を表示するためのウィンドウを作るツールは含まれていません。クロスプラットフォームというVulkanのアドバンテージを活かすためと、X11の恐怖を避けるため、私たちはウィンドウを作るのに[GLFWライブラリ](http://www.glfw.org/)を使います。それはWindows,Linux,MacOSをサポートしています。[SDL](https://www.libsdl.org/)のように、同様の目的のライブラリは他にもありますが、GLFWの利点は、ウィンドウの作成以外にもVulkanのプラットフォーム特有のものを抽象化できることです。

次のコマンドでGLFWをインストールします。
```
sudo apt install libglfw3-dev
```
または
```
sudo dnf install glfw-devel
```
または
```
sudo pacman -S glfw-wayland # X11ユーザーなら glfw-x11
```

### GLM

DirectX 12 とは違い、Vulkanは線形代数ライブラリを含んでいませんので、どこかからダウンロードしてくる必要があります。[GLM](http://glm.g-truc.net/)はグラフィックスAPIと共に使うために設計された良いライブラリで、OpenGLと一緒によく使われています。

それはヘッダオンリーライブラリで、`libglm-dev` または `glm-devel` パッケージからインストールできます。
```
sudo apt install libglm-dev
```
または
```
sudo dnf install glm-devel
```
または
```
sudo pacman -S glm
```

### Shader Compiler

人間が読める[GLSL](https://en.wikipedia.org/wiki/OpenGL_Shading_Language)からバイトコードへシェーダをコンパイルするプログラム以外の、必要なものが全てそろいました。

2つの有名なシェーダコンパイラは、Khronos グループの `glslangValidator`と Google の `glslc`です。後者はGCCやClangと似たような使い方ができるので、それを使います。Ubuntuでは、Googleの[非公式バイナリ](https://github.com/google/shaderc/blob/main/downloads.md)をダウンロードして、`glslc`を`/usr/local/bin`にコピーしてください。権限によっては、`sudo`が必要になるかもしれません。Fedora では `sudo dnf install glslc`、Arch Linux では `sudo pacman -S shaderc` を実行してください。テストとして`glslc`を実行すると、コンパイルするシェーダを渡さなかったと正当な文句を言われるでしょう。
`glslc: error: no input files`
我々は[シェーダモジュール](https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Shader_modules)の章で`glslc`について詳しく説明します。

### makefileプロジェクトのセットアップ (Setting up a makefile project)

必要なものを全てインストールしたので、Vulkan のための makefile プロジェクトを立ち上げて、全てが上手く動いているか確かめる、ちょっとしたコードを書くことができます。

新しいディレクトリを、VulkanTestのような名前で、便利な場所に作成します。main.cppというソースファイルを作成し、次のソースコードを挿入してください。今は理解できなくても大丈夫です。我々はコンパイルとVulkanアプリケーションの実行ができることを確認したいだけです。次の章でスクラッチから始めます。

```cpp
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>

#include <iostream>

int main() {
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported\n";

    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;

    while(!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}
```

次に、この基本的なVulkanコードをコンパイルして実行するためにmakeファイルを記述します。`Makefile`という名前で空のファイルを作成してください。変数やルールがどのように働くかのような、makefileの基本的な経験が既にあると仮定します。もしそうでない場合は[このチュートリアル](https://makefiletutorial.com/)で素早く学んでください。

はじめに、ファイルの残りの部分を簡単にするためにいくつかの変数を定義します。`CFLAGS`という変数を定義し、基本的なコンパイラフラグを設定します：
```
CFLAGS = -std=c++17 -O2
```
我々は現代的なC++を使います(`-std=c++17`)。そして最適化レベルをO2に設定します。-O2はコンパイル時間を短くするために取り除いてもいいですが、リリースビルドのときにはもとに戻すようにしなければいけません。

同様に、リンカーフラグを`LDFLAGS`変数に定義します：
```
LDFLAGS = -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi
```
`-lglfw`フラグはGLFWのため、`-lvulkan`はVulkanローダとリンクするためのもので、残りのフラグはGLFWが必要とする低レベルシステムライブラリです。残りのフラグはGLFW自身が依存しているもので、スレッドとウィンドウ管理に関するものです。

`Xxf68vm` と `Xi` は、あなたのシステムにまだインストールされていないかもしれません。それらは次のパッケージで見つけることができます。
```
sudo apt install libxxf86vm-dev libxi-dev
```
または
```
sudo dnf install libXi libXxf86vm
```
または
```
sudo pacman -S libxi libxxf86vm
```
`VulkanTest`をコンパイルするためのルールを指定するのは簡単です。スペースの代わりにタブでインデントしなければいけないことに注意してください。
```
VulkanTest: main.cpp
    g++ $(CFLAGS) -o VulkanTest main.cpp $(LDFLAGS)
```
`main.cpp`と`Makefile`をディレクトリに保存したら、`make`を実行してルールが正しく動作していることを確認してください。これで`VulkanTest`実行ファイルができるはずです。

さらに、`test`と`clean`の2つのルールを定義します。前者は実行ファイルを実行し、後者はビルドした実行ファイルを削除します。
```
.PHONY: test clean

test: VulkanTest
    ./VulkanTest

clean:
    rm -f VulkanTest
```
`make test`を実行するとプログラムが正しく実行され、Vulkan拡張の数が表示されるはずです。空のウィンドウを閉じると、アプリケーションはリターンコード`0`で終了するはずです。以上を合わせた完全なmakefileは以下のようになります：
```
CFLAGS = -std=c++17 -O2
LDFLAGS = -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi

VulkanTest: main.cpp
    g++ $(CFLAGS) -o VulkanTest main.cpp $(LDFLAGS)

.PHONY: test clean

test: VulkanTest
	./VulkanTest

clean:
    rm -f VulkanTest
```
あなたはこのディレクトリをVulkanプロジェクトのテンプレートとして使うことができます。コピーを作成し、`HelloTriangle`のような名前にリネームし、`main.cpp`内のコードを全て削除してください。

これで[本当の冒険](https://vulkan-tutorial.com/Drawing_a_triangle/Setup/Base_code)の準備は整いました。

## MacOS

以下の解説は、Xcodeと[Homebrewパッケージマネージャ](https://brew.sh/)を使っていると想定しています。また、MacOS バージョン 10.11 以上が必要で、デバイスが[Metal API](https://en.wikipedia.org/wiki/Metal_(API)#Supported_GPUs)をサポートしている必要があります。

### Vulkan SDK

Vulkanアプリケーションを開発するために最も重要なコンポーネントはSDKです。それはヘッダ、標準バリデーションレイヤ、デバッグツール、Vulkan関数のローダを含んでいます。ローダは実行時にドライバから関数を探します。もしGLEWに慣れ親しんでいるなら、OpenGLに対するGLEWと似たようなものだと思ってください。

SDKは[LunarGのウェブサイト](https://vulkan.lunarg.com/)から、ページ下部のボタンを押すとダウンロードできます。アカウントを作る必要はありませんが、作っておくと追加のドキュメントにアクセスできたり、あなたにとって有用かもしれません。
![](https://vulkan-tutorial.com/images/vulkan_sdk_download_buttons.png)

MacOS用のSDKは内部で[MoltenVK](https://moltengl.com/)を使っています。MacOS上でのVulkanのネイティブサポートは無いので、MoltenVK は Vulkan API 呼び出しを Apple の Metal グラフィックスフレームワークへと変換するレイヤーとして動作します。これによって、Apple の Metal フレームワークのデバッグとパフォーマンスの利点を利用することができます。

ダウンロードが終わったら、単純に中身を好きなフォルダに展開してください(Xcodeでプロジェクトを作るときに参照する必要があることを忘れないでください)。展開されたフォルダのうち、`Applications`フォルダにはSDKを使ったいくつかのデモの実行ファイルが含まれています。`vkcube`という実行ファイルを実行すると、次のように表示されます。
![](https://vulkan-tutorial.com/images/cube_demo_mac.png)

### GLFW

以前も述べたように、Vulkan自身はプラットフォーム不可知論者なAPIで、レンダリング結果を表示するためのウィンドウを作るツールは含まれていません。私たちはウィンドウを作るのに[GLFWライブラリ](http://www.glfw.org/)を使います。それはWindows,Linux,MacOSをサポートしています。[SDL](https://www.libsdl.org/)のように、同様の目的のライブラリは他にもありますが、GLFWの利点は、ウィンドウの作成以外にもVulkanのプラットフォーム特有のものを抽象化できることです。

MacOSでGLFWをインストールするため、Homebrewパッケージマネージャで`glfw`パッケージを入手します。
```
brew install glfw
```

### GLM

Vulkanは線形代数ライブラリを含んでいませんので、どこかからダウンロードしてくる必要があります。[GLM](http://glm.g-truc.net/)はグラフィックスAPIと共に使うために設計された良いライブラリで、OpenGLと一緒によく使われています。

それはヘッダオンリーライブラリで、`glm` パッケージからインストールできます。
```
brew install glm
```

### Setting up Xcode

これで必要なものは全てインストールしたので、Vulkanのための基本的なXcodeプロジェクトをセットアップできます。ここで説明することのほとんどは、基本的に多くの「パイプ」の役割で、全ての依存関係をプロジェクトにリンクすることができます。また、以下の説明で`vulkansdk`フォルダに言及するときは、あなたが Vulkan SDK を展開したフォルダを参照していることに注意してください。

Xcodeを起動し、新しいXcodeプロジェクトを作ります。開いたウィンドウから Application > Command Line Tool を選択します。
![](https://vulkan-tutorial.com/images/xcode_new_project.png)

`Next`を選び、プロジェクトの名前を入力したら`Language` で `C++`を選択してください。
![](https://vulkan-tutorial.com/images/xcode_new_project_2.png)

`Next`を押すとプロジェクトが作られたはずです。それでは、生成された`main.cpp`を以下のコードに書き換えましょう。
```cpp
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>

#include <iostream>

int main() {
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported\n";

    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;

    while(!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}
```
このコードが何をやっているか、理解する必要はまだありません。我々は全てが上手く動いていることを確認するために、API 呼び出しのセットアップをしているだけです。

Xcode は既に、ライブラリが見つからないなどいくつかのエラーを表示しているはずです。私たちはこれらのエラーを取り除くためにプロジェクトの設定を開始します。*Project Navigator* パネルからあなたのプロジェクトを選択してください。*Build Settings* タブを開いて：
* **Header Search Paths** フィールドを見つけて`/usr/local/include`へのリンクを追加してください。(これはHomebrewがヘッダをインストールする場所で、glmとglfw3のヘッダファイルがここにあるはずです)そしてVulkanのヘッダファイルのために`vulkansdk/macOS/include`へのリンクを追加してください。
* **Library Search Paths** フィールとを見つけて`/usr/local/lib`へのリンク(これもHomebrewがライブラリをインストールする場所で、glmとglfw3のlibファイルがここにあるはずです)と`vulkansdk/macOS/lib`へのリンクを追加してください。

以下のようになるはずです(もちろん、パスはあなたのファイルの場所によって変わります):
![](https://vulkan-tutorial.com/images/xcode_paths.png)

*Build Phases* タブの中の **Link Binary With Libraries** に、`glfw3`と`vulkan`を両方とも追加します。ことを簡単にするため、私たちはプロジェクトにダイナミックライブラリを追加します。(スタティックライブラリを使いたい場合は、それらライブラリのドキュメントを参照してください)

* glfwのために、`/usr/local/lib`フォルダを開いて`libglfw.3.x.dylib`といったような名前のファイルを見つけてください("x"はライブラリのバージョン番号で、いつ Homebrew からパッケージをダウンロードしたかによって変わります)。単純にこのファイルを Xcode の Linked Frameworks と Libraries タブにドラッグしてください。
* vulkanのために、`vulkansdk/macOS/lib`を開いてください。`libvulkan.1.dylib`と`libvulkan.1.x.xx.dylib`("x"はダウンロードしたSDKのバージョン番号)、両方のファイルについて同じことをしてください。

これらのライブラリを追加した後、同じタブの **Copy Files** の`Destination`を"Frameworks"に変更し、Subpathをクリアして"Copy only when installing"のチェックを外してください。"+"記号をクリックして、ここにもこれら3つのフレームワークを全て追加してください。

Xcode の設定は次のようになったはずです：
![](https://vulkan-tutorial.com/images/xcode_frameworks.png)

最後に、いくつかの環境変数を設定する必要があります。Xcode のツールバーで`Product` > `Scheme` > `Edit Scheme...`と選択し、`Arguments`タブで次の2つの環境変数を追加してください：
* VK_ICD_FILENAMES = `vulkansdk/macOS/share/vulkan/icd.d/MoltenVK_icd.json`
* VK_LAYER_PATH = `vulkansdk/macOS/share/vulkan/explicit_layer.d`

次のようになるはずです：
![](https://vulkan-tutorial.com/images/xcode_variables.png)

ついに、全ての準備ができました！ここで、プロジェクトを実行したら(あなたの選択に応じて、ビルド構成をDebugまたはReleaseに設定するのを忘れないでください)、以下のように表示されるはずです：
![](https://vulkan-tutorial.com/images/xcode_output.png)

拡張の数は0以外になるはずです。ライブラリからのログは、あなたの構成によって違うメッセージが表示されるかもしれません。

これで[本番](https://qiita.com/shibainuudon/items/855c3058372cb7699b2f)の準備は万端です。

[前の記事](https://qiita.com/shibainuudon/items/368567bc11ca30fa0074)
[次の記事](https://qiita.com/shibainuudon/items/855c3058372cb7699b2f)