「Hello Vulkan」トライアングル例
QVulkanWindow とVulkan APIを使用したレンダリングの基本を紹介します。
「Hello Vulkan Triangle」サンプルでは、三角形を描画するために、頂点シェーダーやフラグメントシェーダーを含む完全なグラフィックスパイプラインを構築します。

起動
Vulkan を使用する各 Qt アプリケーションには、アプリケーションレベルのステートをカプセル化し、Vulkan ライブラリを初期化する `Vulkan instance ` が必要です。
QVulkanWindow は常にQVulkanInstance に関連付けられている必要があるため、この例ではウィンドウの作成前にインスタンスを作成しています。また、QVulkanInstance オブジェクトはウィンドウよりも長く存続する必要があります。
QVulkanInstance inst;
inst.setLayers({"VK_LAYER_KHRONOS_validation"});
if(!inst.create())
qFatal("Failed to create Vulkan instance: %d", inst.errorCode());この例では、サポートされている場合にバリデーションレイヤーを有効にします。要求されたレイヤーが存在しない場合、そのリクエストは無視されます。同様の方法で、追加のレイヤーや拡張機能を有効にすることができます。
VulkanWindow w;
w.setVulkanInstance(&inst);
w.resize(1024, 768);
w.show();インスタンスの準備が整ったら、ウィンドウを作成します。w はスタック上に存在し、inst の後に宣言される点に注意してください。
QVulkanWindowのサブクラス
QVulkanWindow にカスタム機能を追加するには、サブクラス化を行います。これは、QOpenGLWindow およびQOpenGLWidget の既存のパターンに従っています。ただし、QVulkanWindow は別のQVulkanWindowRenderer オブジェクトを利用します。
QVulkanWindow サブクラスは、ファクトリ関数QVulkanWindow::createRenderer()を再実装しています。これは単に、QVulkanWindowRenderer サブクラスの新しいインスタンスを返すだけです。ウィンドウオブジェクトを介してさまざまなVulkanリソースにアクセスできるようにするため、ウィンドウへのポインタがコンストラクタを通じて渡され、格納されます。
class VulkanWindow : public QVulkanWindow
{
public:
QVulkanWindowRenderer *createRenderer() override;
};実際のレンダリング
QVulkanWindow サブクラスは、QVulkanWindowRenderer::startNextFrame()の再実装内で描画呼び出しをキューに追加します。完了したら、QVulkanWindow::frameReady()を呼び戻す必要があります。この例では非同期コマンド生成を行っていないため、frameReady()の呼び出しはstartNextFrame()から直接行われます。継続的な更新を得るために、この例ではQWindow::requestUpdate()を呼び出して再描画をスケジュールしています。
また、このサンプルではマルチサンプルアンチエイリアシングも実演しています。QVulkanWindow::supportedSampleCounts() によって報告されるサポートされているサンプル数に基づき、このサンプルでは 8x、4x、またはマルチサンプリングなしのいずれかを選択します。 QVulkanWindow::setSamples() によって設定されると、QVulkanWindow が残りの処理を自動的に行います。追加のマルチサンプルカラーバッファが自動的に作成され、各フレームのデフォルトのレンダリングパスの終了時に、スワップチェーンバッファへの書き込みが行われます。
例の動作
このサンプルは、以下の手順で実行できます。
- Qt Creator
Welcome モードを開き、Examples からこのサンプルを選択します。詳細については、Qt Creator の「チュートリアル:ビルドと実行」を参照してください。
- Qt Extension for Visual Studio Code
Command Palette から `Qt: Open Qt examples ` コマンドを実行し、リストからサンプルを選択します。詳細については、Qt Extension for Visual Studio Code: Tutorial: Build and run を参照してください。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.