この記事は
Vukan系列的第二篇文章
、、 、および 以降のアプリケーション開発者向けの上一篇
記事です。この記事の主な内容は以下から始まり、Mac オペレーティング システムについて詳しく紹介されます。Vulkan进行了简单介绍
其与OpenGL的优劣势进行了比较
选择图形API方面提供了建议
如何搭建Vulkan开发环境
Vulkan はコマンド バッファ ベースなので、より底层图形API接口
優れたものになる可能性があります。OpenGL と比較して、 Vulkan 、、などには利点があります。同時に、Vulkan には、 などのいくつかの課題もあります。アプリケーション開発中、開発者は実際のニーズとプラットフォームのサポートに応じて、適切なグラフィックス API インターフェイスを選択する必要があります。利用现代GPU的强大计算能力
获得更高的渲染性能和更低的CPU开销
提供了更详细的硬件控制
更高效的内存管理
更灵活的管线状态管理
多线程支持
学习曲线较陡峭
编程难度较大
1.Vulkan SDKをダウンロードする
Vulkan 公式 Web サイトにアクセスして、対応するプラットフォーム用の Vulkan SDK をダウンロードします。
// Vulkan官网下载对应平台的sdk
https://vulkan.lunarg.com/sdk/home
Vulkan SDK をインストールした後、VulkanSDK/1.3.250.0/Applications
ディレクトリで実行することができますvkcube
。次の実行インターフェイスが表示された場合は、コンピュータが Vulkan をサポートしていることを意味します。
2.GLFWとGLMをインストールする
Vulkan は、プラットフォームに依存しないアプリケーション グラフィックス API インターフェイスであり、ローカル ウィンドウを作成できるかどうかは、GLFW と GLM のサポートに依存します。
GLFW (Graphics Library Framework)
:
元々は OpenGL ウィンドウとコンテキストを作成するために使用されていたオープン ソース ライブラリで、OpenGL ウィンドウの作成、入力イベントの処理、ウィンドウ イベントの処理を簡単に実行できるクロスプラットフォーム API のセットを提供します。
GLFW は Vulkan の拡張機能のセットを提供しており、開発者が Vulkan ウィンドウとコンテキストを作成し、ウィンドウ イベントや入力イベントなどを処理することが容易になります。GLM (OpenGL Mathematics)
:
GLM は数学計算用のオープンソース ライブラリであり、行列変換、ベクトル計算、射影などの数学演算のためのクラスと関数のセットを提供します。
GLM は Vulkan と密接に関係しており、Vulkan の開発時に、GLM はレンダリング パイプラインを制御するための行列変換やベクトル計算などの数学的演算を開発者に提供し、開発者が 3D グラフィックスをプログラムしやすくします。
// 通过homebrew进行glfw与glm
brew install glfw3
brew install glm
3.Xcodeの設定
依存関係がインストールされたので、基本的な Xcode Vulkan プロジェクトを構成します。
3.1 新しい Xcode プロジェクトを作成する
Xcode を起動して新しいプロジェクトを作成し、Application > Command Line Tool
プロジェクト タイプを選択します。
プロジェクトで使用する言語として C++ を選択します。
3.2 ヘッダファイルとライブラリファイルの設定
タブページを開き、 Build Settings
Vulkan、glfw、glmの头文件
合計lib文件
を設定します。search path
/usr/local/include
Homebrew インストール ヘッダー ファイルのパスであるヘッダー検索パスを追加します。インストールした glm と glfw3 のヘッダー ファイルはすべてこのフォルダーの下にあります。vulkansdk/macOS/include
ヘッダー検索パスが追加されます。これは、Vulkan SDK インストール ディレクトリのヘッダー ファイル パスです。
/usr/local/lib
Homebrew インストール ライブラリ ファイルのパスであるライブラリ検索パスを追加します。インストールした glm と glfw3 のライブラリ ファイルはすべてこのフォルダーの下にあります。vulkansdk/macOS/lib
Vulkan SDK インストール ディレクトリのライブラリ ファイル パスであるライブラリ検索パスを追加します。
3.3 ダイナミックライブラリの追加
Build Phases
タブをクリックして、 glfw3 および vulkan フレームワークの動的ライブラリを追加します。
- glfw の場合は、
/usr/local/lib
ディレクトリを開くと、libglfw.3.x.dylib
同様の形式のファイルが見つかります。このファイルをラベルの拖拽
下に置きます。Linked Frameworks and Libraries
- Vulkan の場合は、
vulkansdk/macOS/lib
ディレクトリを開き、拖拽
libvulkan.1.dylib
[libvulkan.1.x.xx.dylib
リンクされたフレームワークとライブラリ] タブに移動します。
上記を行った後、Copy Files
ラベルを変更します。
- 宛先をフレームワークに設定します。
- [サブパス] テキスト ボックスをクリアします。
- インストール時に「コピーのみ」をチェックしないでください。
- 次に、+ 記号をクリックして 3 つの動的ライブラリをすべて追加します。
3.4 環境変数の構成
Product>Scheme>Edit Scheme...
Xcode ツールバーの [開く]タブでArguments
、次の環境変数を追加します。
VK_LAYER_PATH = /Users/xiaxl/VulkanSDK/1.3.250.0/macOS/share/vulkan/explicit_layer.d
VK_ICD_FILENAMES = /Users/xiaxl/VulkanSDK/1.3.250.0/macOS/share/vulkan/icd.d/MoltenVK_icd.json
4. テスト
ここまでで、すべての設定が完了しました。次のコードを実行すると、環境構成が正常かどうかをテストできます。
#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() {
// 初始化GLFW库
glfwInit();
// GLFW最早是为OpenGL设计
// 所以此处需要显式的设置GLFW阻止自动创建OpenGL上下文
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 supportedn";
// 测试glm
glm::mat4 matrix;
glm::vec4 vec;
auto test = matrix * vec;
// 未主动close时持续消费点击event
while(!glfwWindowShouldClose(window)) {
glfwPollEvents();
}
// 销毁window
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
ランニング効果は以下の通りです。
参考
Vulkan SDK ダウンロード:
https://vulkan.lunarg.com/sdk/home
公式 vulkan:
https://registry.khronos.org/vulkan/
Vulkan 公式ドキュメント:
https://registry.khronos.org/vulkan/specs/1.3-extensions/pdf/vkspec.pdf
=終わり=
この記事は「CODING Technology Pavilion」公式アカウントで公開したものですが、記事が参考になった場合は私の公式アカウントにも注目してください。