VS Code+MinGW 配置Vulkan开发环境(Windows)

本文详细介绍如何在VSCode中配置Vulkan开发环境,包括所需软件的下载与配置过程,并附带测试代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VS Code+MinGW 配置Vulkan开发环境(Windows)

    初学Vulkan,网上教程不多,而且大多是用Visual Studio开发的,VS太大了不想再去下载…所以准备在VS Code上搭建环境。搭建时因为找不到相关文章,遇到了挺多麻烦…好在都解决了…所以自己来写一篇帮下像我一样的新手。(环境虽然配置好了,但没有进行充分的测试,如有错误请多指正)
本机环境:win10,GTX 960m

(一)软件下载

相关软件下载,我一上来就栽了…
参考:https://vulkan-tutorial.com/Development_environment#page_Setting_up_Visual_Studio
国内有翻译版:https://www.cnblogs.com/heitao/p/6882815.html

1. VS Code

在[- VS Code 官网 -](https://code.visualstudio.com/)下载即可,然后配置C++开发环境,这个网上有许多教程,比如:

https://blog.youkuaiyun.com/bat67/article/details/76095813
下载安装MinGW时注意是32位还是64位!!!不带编号的(如:MinGW)应该是32位,像MinGW-w64是64位!!记住自己安装的是哪一个!!!
配置好后先写个Hello world测试一下。

2. Vulkan SDK

要使用Vulkan需要显卡支持,可以下载SDK后运行SDK里bin或bin32目录下的vkcube.exe,如果能运行说明显卡支持Vulkan;Nvidia显卡也可以在这个网站看是否支持: https://developer.nvidia.com/vulkan-driver 

Vulkan官方地址:https://vulkan.lunarg.com/home/welcome
下载即可,一个安装包里32位和64位都有。
在这里插入图片描述
在这里插入图片描述

3. GLFW

一个窗口库,他们在都用那我也用呗orz
GLFW下载地址: https://www.glfw.org/download.htmlGLFW下载
注意选择和之前MinGW一致的版本!!!
我之前没注意下载的32位MinGW+64位GLFW,出了问题DEBUG一下午…

4. GLM

Vulkan没有线性代数计算的库,由此引入GLM。
GLM下载地址: https://github.com/g-truc/glm
在这里插入图片描述
Github项目,点右边的Clone or download然后点Download ZIP即可。

(二)软件配置

    软件配置花了我最久…这都源于对软件和编译器的不了解=-=搞懂这个学到了好多东西
    接下来我们要做的,是要将各软件的头文件导入项目

1. 头文件的导入

    我们知道,C/C++引入头文件有两种方式#include <xxx>和#include “xxx”,尖括号版的include的直接从“默认目录”搜索,引号版的先从项目目录搜索,再到默认目录搜索。
    因为GLFW里头文件对Vulkan头文件的引用是尖括号,网上许多实例代码也都用的尖括号,所以就统一用尖括号,因此我们要将头文件放到“默认目录”,而这个“默认目录”一般包含有MinGW安装目录下的include文件夹。
    (也可以在VS Code里配置编译器参数,使用-I参数(大写i)来指定搜索目录…这里不做赘述)
在这里插入图片描述
    接下来就要把各个软件的头文件放到这里面来了。

  • Vulkan SDK
    找到SDK安装目录,依次打开 “1.1.101.0”(版本号) 、“Include” 文件夹,将里面的vulkan文件夹复制到上面的目录。
    在这里插入图片描述
  • GLFW
    找到GLFW安装目录,打开"include" 文件夹,将里面的GLFW文件夹复制到上面的目录。
    在这里插入图片描述
    我这里是glfw-3.2.1.bin.WIN32,64位版的就是glfw-3.2.1.bin.WIN64。
  • GLM
    找到GLFW安装目录,打开"include" 文件夹,将里面的glm文件夹复制到上面的目录。
    在这里插入图片描述
    现在,所有头文件就放好了。

2. 库的导入

除了头文件,我们还需要 库(library) 才能编译运行程序,否则可能会出现类似的错误:

xxx/xxx.cpp:19: undefined reference to 'vkEnumerateInstanceExtensionProperties@12' //未加载vulkan-1库

xxx/xxxx.cpp:13: undefined reference to 'glfwInit' //未加载glfw3dll库
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:15: undefined reference to 'glfwWindowHint'
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:16: undefined reference to 'glfwCreateWindow'
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:27: undefined reference to 'glfwWindowShouldClose'
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:28: undefined reference to 'glfwPollEvents'
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:31: undefined reference to 'glfwDestroyWindow'
xxx/mingw32/bin/ld.exe: xxx/xxx.cpp:33: undefined reference to 'glfwTerminate'

    库文件也有“默认目录”的说法,一般为MinGW安装目录下的 lib 文件夹。库文件有许多种,如.dll、.so、.a、.lib,具体关系可以看这篇文章: https://www.cnblogs.com/ziyunlong/p/6023121.html
    MinGW以前好像只支持.a的库,但现在支持.lib格式的库了,vulkan给的库好像都是.lib后缀,多亏了这个更新才能使用vulkan…
    这里只有Vulkan和GLFW需要用库。

  • Vulkan SDK
    找到SDK安装目录,依次打开 “1.1.101.0”(版本号) 、“Lib32” 文件夹(如果你是64位,就是Lib文件夹),将里面的vulkan-1.lib复制到MinGW安装目录下的lib文件夹。
  • GLFW
    找到GLFW安装目录,打开lib-mingw文件夹如果你是64位,就是lib-mingw-w64文件夹),将里面的libglfw3dll.a复制到MinGW安装目录下的lib文件夹。
    (注:这里我用的是libglfw3dll.a,运行程序时需要把同目录下的glfw3.dll复制到程序所在文件夹,不知道为什么使用libglfw3.a会报错…)
  • VS Code配置
    库文件光复制了还没用,需要在VS Code里配置!!!!
    打开之前配置VS Code的C++调试环境时创建的tasks.json文件,找到args,在数组里添加 “-lglfw3”“-lvulkan-1”(注意格式)
    添加库
    现在所有工作就完成了!

(三)测试

以下代码来自Vulkan Tutorial。复制到VS Code里测试。

// https://vulkan-tutorial.com/Development_environment
#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" << std::endl;

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

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

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}

效果:
测试效果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值