読者です 読者をやめる 読者になる 読者になる

ムラサメ研究ブログ

主にゲームやプログラミングのログ

Vulkanほんと入門!

C++ Vulkan

はじめに

3D APIは複数あります

OpenGL

OpenGL、OpenGLES、WebGL等 色々と出ているがどれもがクロスプラットフォーム 現状 WindowsLinuxMacAndroidiOS、Web が動くのはこれしかない コンシュマーゲーム機でも採用されている 現在 WebGL1.0(GLES2.0)が主流だが、WebGL2.0(GLES3.0)も 動くブラウザが増えている

非常に簡単にコーディング出来るし、各種ラッパーライブラリもあり便利な反面 APIが高レイヤーすぎてパフォーマンスに問題がある 今後は速度を劇的に改善したVulkanへ移行されていくと思われる

その為、私は選択肢から外した

DirectX

Windows OS上で動くグラフィックAPI 現在は バージョン12まで出ている 非常に低レイヤーで最も速度が速いし さすがMicrosoft様、ライブラリも速度のわりに使いやすい またC++でラップされている。当然すべてスマートポインタ(COMポインタ)になっており メモリ開放も比較的容易 問題点は Windowsでしか動かない事

Mantle API

AMDの提唱した低レイヤーAPI 速度はかなり高速らしいが、普及率で下火になり Vulkanへと引き継がれる

Metal API

最初AppleはVulkanプロジェクトに入っていたが、Appleが脱退し 独自のAPIを作る そのため Metal APIApple製品でしか使えない Vulkanから分裂しただけあって、Vulkanとかなり似ている

Vulkan API

クロノスグループにより、OpenGLの後継APIとして標準化される MetalAPIを基本にした高速APIである WindowsLinuxAndroidで動く。 また Webで動く WebVulkanも開発されているらしい??

Apple製品以外はすべて対応していて、OpenGLとは比べ物にならない速度である DirectX12よりほんの少し遅いらしいが 誤差範囲

ということで、これからVulkanを勉強しようとおもう

環境構築

まず 私の環境は RazerBladeというノートPC ビデオは GeForce1060 Windows10である WindowsLinuxで、Kepler以降のGPUが必要だ。 以前はGPUの乗ってないWindowsとMacbookProしか持っておらず開発出来なかった RazerBladeを手に入れた今は 誰も邪魔するものはいない!

NVidiaより Vulkanドライバをインストール Vulkan Driver Support | NVIDIA Developer

Valveが開発協力した?という LunarG SDKを使う。私の知る限りこのSDKしか存在しない https://vulkan.lunarg.com/

サンプルがいっぱいついているが、実行するためにはCMakeなどが必要 VisualStudioさえインストールされてあれば Demos以下は実行可能である CubeにLunarGと書かれたテクスチャがはられたデモが表示されるはずだ

プロジェクトTemplate作成

VisualStudioのテンプレートも用意されている プロジェクト新規作成時にVulkanのパスの通ったプロジェクトを作成できる 便利なのでぜひ行っておきたい

SDKPATH/Templates/Visual Studio 201x にあるZIPファイルを ドキュメント\Visual Studio 201x\Templates\ProjectTemplates\Visual C++ Project に全部コピーしてVisualStudioを立ち上げなおすと New Projectを作った際にVulkanがテンプレートに表示される

サンプルを実行する

https://vulkan.lunarg.com/doc/sdk/1.0.39.1/windows/getting_started.html

に書いてあるように CMake 3.0 以降、Python3.0以降、VisualStudio2013 Update4以降 が必要

CMake

https://cmake.org/download/ ここから Windows用をダウンロードしインストール CMakeのパスを設定するか聞かれるので、設定しておこう

Python

Windowsは下記より。くれぐれも 3.0以降を入れる事 Python Releases for Windows | Python.org

ビルド

上記をインストールしたあとは VisualStudioとCMake、Pythonにパスを通したコマンドプロンプト 具体的には VisualStudioに VS20xx用MSBuildコマンドプロンプト 等を実行し SDKPATH/Samplesへいき build_windows_samples.bat を実行する

エラー!!

CMake Error at C:/Program Files/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find PythonInterp: Found unsuitable version “1.4”, but required is at least “3” (found C:/Program Files/Emscripten/python/2.7.5.3_64bit/python.exe) Call Stack (most recent call first): C:/Program Files/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:375 (_FPHSA_FAILURE_MESSAGE) C:/Program Files/CMake/share/cmake-3.8/Modules/FindPythonInterp.cmake:149 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) Sample-Programs/Hologram/CMakeLists.txt:1 (find_package)

Emscriptenを入れていてそっちのパスを見に行っている EmscriptenをアンインストールしCMake入れなおしたが 上記エラーが続き とりあえずあきらめた・・・

WindowsPython どうすればいいんだろうか・・・

解決

CMakeCacheにごみが残っていたので、削除してビルドしなおしたらうまくいきました。

Samples\build以下に プロジェクトが作成されるのでサンプルをビルドできます

ただし、VK_LayerOverlayだけはビルド出来ませんでした でも現状問題ないので このままサンプル見て勉強です!