🐡

VulkanをVSCodeで書く方法

に公開

開発環境

エディタ: Visual Studio Code
OS: Windows 11

操作方法

Visual Studio CodeではCtrl + Shift + Bでビルドが可能。
Visual Studio CodeではF5でデバックの開始が可能。

手法

1, フォルダやファイルの作成
2, バッチファイルの記入
3, jsonファイルの記入
4, 完成

フォルダやファイルの作成

フォルダやファイル構成を以下に示す。

バッチファイルの記入

build.batファイルの記入
callの部分は各自によって異なる。vcvars64.batファイルパスを指定する。

@echo off

call "E:\VisualStudio2026\VC\Auxiliary\Build\vcvars64.bat"

SET includes=/Isrc /I%VULKAN_SDK%/Include
SET links=/link /LIBPATH:%VULKAN_SDK%/Lib vulkan-1.lib
SET defines=/D DEBUG

echo "Building main..."

cl /EHsc %includes% %defines% src/main.cpp %links%

jsonファイルの記入

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Windows Build",
            "command": "${workspaceFolder}/build.bat",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Windows Launch",
            "program": "${workspaceFolder}/main.exe",
            "type": "cppvsdbg",
            "request": "launch",
            "cwd": "${workspaceFolder}"
        }
    ]
}

settings.json

{
    "C_Cpp.default.includePath": [
        "${workspaceFolder}/src",
        "${VULKAN_SDK}/Include"
    ],
}

完成

下準備は終わりました!!
srcフォルダにmain.cppを作成。テストコード書きます。

main.cpp
#include <iostream>
#include <vulkan/vulkan.h>

int main()
{
    VkApplicationInfo appInfo{};
    appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
    appInfo.pNext = nullptr;
    appInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
    appInfo.pApplicationName = "App Name";
    appInfo.engineVersion = VK_MAKE_VERSION(1, 0, 0);
    appInfo.pEngineName = "No Engine";
    appInfo.apiVersion = VK_API_VERSION_1_4;

    VkInstanceCreateInfo createInfo{};
    createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
    createInfo.pApplicationInfo = &appInfo;

    VkInstance m_instance = VK_NULL_HANDLE;
    if (vkCreateInstance(&createInfo, nullptr, &m_instance) != VK_SUCCESS)
    {
        std::cout << "Failed to create instance" << std::endl;
        std::exit(1);
    }

    std::cout << "Successfully create instance" << std::endl;

    return EXIT_SUCCESS;
}

Discussion