Vulkan环境配置 | vscode+msvc 解决方案

前言

如果作为Windows 11侠的你是一个vscode爱好者,凑巧电脑上还安装有Visual Studio,这个时候你突然想配置一个Vulkan开发环境。作为minimalist的你可不希望在电脑上安装任何额外的组件,那么这篇安装指南一定适合你。

准备工作

你需要确保你的环境都已经有下列程序:

  • Visual Studio Community 2019或者2022(2017还没试过,应该也可以)
  • vscode

安装MSVC

a.首先打开Visual Studio Installer,点击修改:

in case 你不知道Visual Studio Installer怎么打开

b.勾选上MSVC x64/x86生成工具,并点击右下角的修改,Visual Studio Installer会自动下载并安装

c.安装完毕之后,打开开始,搜索x64 Native Tools Command Prompt for VS 2019,打开并键入 cl

如果你的命令行有如下输出,说明你已经正确安装MSVC了

下载并安装Vulkan SDK

a.打开https://vulkan.lunarg.com/sdk/home#windows,选择最新版的SDK并下载安装:

b.打开环境变量,如果你能看到这些环境变量,说明你已经正确安装了Vulkan SDK

除此之外还可以在开始菜单打开Vulkan Cube例程进行验证:

下载GLFW与GLM

GLFW用于Vulkan的窗口显示(除非你想做off screen渲染,或者直接用Windows提供的窗口接口),GLM用于Vulkan中的线性代数运算

从https://www.glfw.org/与https://github.com/g-truc/glm下载两个库并解压到一个文件夹中:

配置vscode开发环境

a.为了方便在不同设备上进行开发,首先打开环境变量,新建如下变量并保存

VCVARS64(找到你的Visual Studio路径并填入)

GLFW_SDK与GLM_SDK(填入你上一步将GLFW与GLM解压的目标路径)

这样,当你把项目同步到不同的设备上进行开发时只需要重新配置这三个环境变量而不需要改动项目本身了

b.我们配置编译使用的批处理命令,接下来打开vscode,新建一个项目,并在其中新建一个bat文件,名为build.bat,填入如下内容并保存:

@echo off
call "%VCVARS64%" SET includes=/Isrc /I%VULKAN_SDK%/Include /I%GLFW_SDK%/include /I%GLM_SDK%
SET links=/link /LIBPATH:%VULKAN_SDK%/Lib /LIBPATH:%GLFW_SDK%/lib-vc2019 vulkan-1.lib glfw3_mt.lib user32.lib gdi32.lib shell32.lib
SET defines=/D DEBUG
SET standard=/std:c++17
SET optim=/O2 echo "Building main..."
cl /EHsc %standard% %optim% %includes% %defines% src/main.cpp %links%

注意,/LIBPATH:%GLFW_SDK%/lib-vc2019这一项改成你所安装的Viusal Studio所对应的版本

由于GLM本身只有头文件,因此不需要在编译过程进行链接

(Optional)如果你希望运行过程进行动态链接的话,在Path中添加GLFW库的路径

并将build.bat的第四行改为:

SET links=/link /LIBPATH:%VULKAN_SDK%/Lib /LIBPATH:%GLFW_SDK%/lib-vc2019 vulkan-1.lib glfw3dll.lib

c.接下来我们配置编译与debug的设定,新建一个文件夹名为.vscode

在其中新建一个文件名为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}",
"logging": {
"moduleLoad": false
},
}
]
}

d.最后再配置vscode开发的语法高亮

首先打开exntension,确保你已经下载了开发C/C++所需要的extension了

打开File -> Preferences -> Setting,点击Workspace

在Include Path这里分别加上

"C:\\Program Files\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.42.34433\\include",

"${GLFW_SDK}\\include",

"${GLM_SDK}",

"${workspaceFolder}\\src",

"${VULKAN_SDK}\\Include"

这样,你就已经完成了对vulkan开发环境的配置了。

编译与运行

a.首先新建一个文件,路径为src/main.cpp,填入以下内容并保存:

#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\n"; glm::mat4 matrix;
glm::vec4 vec;
auto test = matrix * vec; while(!glfwWindowShouldClose(window)) {
glfwPollEvents();
} glfwDestroyWindow(window); glfwTerminate(); return 0;
}

使用快捷键ctrl+shift+B进行代码编译,编译成功之后按F5进行debug运行,控制台输出如下内容说明你的开发环境已经配置成功:

代码

如果你希望获取代码的话,可以从https://github.com/Uzukidd/vulkan-tutorial直接进行clone

引用

Vulkan Tutorial

C++ Vulkan Engine | Development Setup

Vulkan环境配置 | vscode+msvc 解决方案的更多相关文章

  1. Git环境配置+VSCode中文乱码问题

    异常处理汇总-开发工具  http://www.cnblogs.com/dunitian/p/4522988.html 1.VSCode中文乱码问题 (files.autoguessEncoding= ...

  2. VSCode PHP 开发环境配置 详细教程

    VSCode PHP 开发环境配置 详细教程 这篇文章主要介绍了VScode+PHPstudy配置PHP开发环境的步骤,整理了官方以及优秀第三方的内容,对于学习和工作有一定借鉴意义. 配置过程 第一步 ...

  3. VScode中python环境配置

    vscode中python环境配置 想要在vscode中运行python代码必须要告诉vscode使用哪个解释器才行 方法1. 打开命令面板(Ctrl+Shift+P)输入Python: Select ...

  4. vscode C++开发环境配置教程(教你如何用vscode写C++)

    用了一段时间的cb,Devc++,但一直感觉cb的高亮太差,而Devc++使用体验差(尤其是代码补全功能),换过vs2017,但是由于其太大了,卡顿十分明显,所以最终选择了vscode这款轻量级编译器 ...

  5. anaconda + VSCode + 生产环境配置

    1. 修改jupyter notebook 默认路径: 进入anaconda 命令行, jupyter notebook --generate-config   生成配置文件, 该文件在    本机用 ...

  6. webpack1.x环境配置与打包基础【附带各种 "坑" 与解决方案!持续更新中...】

    首先介绍传统模块化开发的主流方案: 1.基与CMD的sea.js,玉伯提出的解决方案,据说原来京东团队在使用.用时才定义,就近加载. 2.基于AMD的require.js,之前在用.提前声明与定义.国 ...

  7. Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)

    win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置   写在前面的话: 再弄这个之前,我对python也好 ...

  8. VsCode中编写python环境配置

    1. VsCode中编写python环境配置 1.1. 前言 有过开发经验都知道idea一系列的软件虽然功能比较多,但比较容易卡,电脑不好还真容易上火,这里我想要入门python,还是选了款vscod ...

  9. Ubuntu16.04下配置VScode的C/C++开发环境

    博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...

  10. 免安装方式的Python之VSCode环境配置

    概述 本文旨在介绍免安装方式,在VSCode中搭建Python(3.73)的配置环境.至于Python是什么.它能做些什么,诸如此类的介绍均不在此文中介绍,相信能看此文的人,多多少少都会有些了解. V ...

随机推荐

  1. Advanced .NET Remoting: 第 9 章 4.改变编程模型

    Advanced .NET Remoting: 第 9 章 4.改变编程模型 前面的所有连接器在 .NET Remoting 应用程序的服务器端和客户端两方面增强功能.可插拔的连接器架构不仅支持创建连 ...

  2. 【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元素平移到数组的最后

    题目 请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p, p小于等于n-1)的数组元素平移到数组的最后. 例如,一维数组中的原始内容为:1,2,3,4 ...

  3. 【Linux】【UOS】为挂载的磁盘创建快捷方式(软链接)

    打开项目或者保存文件的时候,如果需求路径不是系统盘路径,那么找起来还真是麻烦.以下时候通过创建快捷方式(软链接)的方式,将打开磁盘的快捷方式放在用户目录下,就方便寻找打开了. 1.查询挂载点 sudo ...

  4. Debian关闭防火墙命令详解

    防火墙是保护计算机系统安全的关键组件.在一些情况下,需要关闭防火墙,以允许特定的应用程序或服务访问网络.在Debian系统中关闭防火墙的方法多种多样,本文将从多个方面对Debian关闭防火墙命令进行详 ...

  5. C#/.NET/.NET Core技术前沿周刊 | 第 19 期(2024年12.23-12.29)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  6. SQL优化的这15招,真香!

    前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到. 如果某天你负责的某个线上接口,出现了性能问题,需要做优化.那么你首先想到的很有可能是优化sql语句,因为它 ...

  7. 冷水机超频AMD 2600X 4.5G

    整个测试大概持续了一个半小时,期间水温保持在2度左右(±1摄氏度).后来开始冷凝,而且超频也到了4.5G瓶颈,所以停了下来. 全核4.4G过R154.5G过CPU-Z认证(点击查看)温度表现,一般吧. ...

  8. C# 给当前程序创建桌面快捷方式

    C# 给当前程序创建桌面快捷方式 //by wgscd //date 2024-10-22 using System; using System.Reflection; using System.IO ...

  9. 时间序列数据库TSDB InfluxDB介绍

    背景 这两年互联网行业掀着一股新风,总是听着各种高大上的新名词.大数据.人工智能.物联网.机器学习.商业智能.智能预警啊等等. 以前的系统,做数据可视化,信息管理,流程控制.现在业务已经不仅仅满足于这 ...

  10. 基于同态加密的PSI开源库-1

    下面介绍一个PSI的开源库,还原论文:CCS2017:Fast Private Set Intersection from Homomorphic Encryption和CCS2018:Labeled ...