Vulkan开发环境配置 Win10+VS2019

2023-11-07

官方的环境配置教程 https://vulkan-tutorial.com/Development_environment

一、下载SKD

进入官网 https://vulkan.lunarg.com/

由于是windows下进行开发,所以选择windows的sdk,点击下载,也可以右击选择复制链接,然后使用迅雷下载,这样下载的更快些。

下载然后后双击进行安装

安装完成。

完成后,我们可以看一下安装目录下的bin目录,这里有一个可以执行的示例程序vkcube.exe.

在Bin目录下还有一个非常有用的程序:glslangValidator.exe。它可以将GLSL代码编译为字节码。除此之外,Bin目录下还包含了Vulkan函数加载器和校验层的二进制文件,它们的库文件则位于Vulkan SDK的Lib目录下。最后是Vulkan SDK的Include目录,它包含了Vulkan API的头文件。除此之外,还有很多文件和目录,但对于我们的教程来说,并没有直接用到它们,所以就不再一一介绍。

我们执行一下vkcube.exe,效果如下:

如果看到了上图的界面,一个旋转的小盒子,那么证明显卡是支持vulkan的,如果出现了其他意外情况,那么需要查看一下显卡是否支持vulkan,或者显卡驱动是否更新到了最新的版本。

vulkan支持的显卡可以参考英伟达的官网 https://developer.nvidia.com/vulkan-driver

bin目录中还有一个对开发人员有价值的可执行程序,vulkaninfoSDK.exe查看Vulkan的相关参数

在sdk的安装目录下,官方提供了一个Demos的项目,可以双击DEMOS.sln打开,官方推荐的编译器是VS2017或2019

打开后的项目

可以直接F5运行了,真的很方便

二、下面开始配置属于我们自己的开发环境

1.查看下系统的环境变量,VulkanSDK安装完成后,会自动在系统的环境变量中添加sdk的路径

2.GLFW

Vulkan是一个平台无关的图形API,它没有包含任何用于创建窗口的功能。我们使用GLFW库来完成窗口相关操作,GLFW库支持Windows,Linux和MacOS。

可以在GLFW官方 https://www.glfw.org/download.html 下载最新的版本

下载并解压后的目录如下:

我们可以将include中的GLFW文件夹复制到VulkanSDK\1.2.176.1\Third-Party\Include目录下,

由于我用的是VS2019,所以将拷贝lib-vc2019目录下的静态库和动态库文件

拷贝到Third-Party/Bin路径下

3.GLM

和DirectX 12不同,Vulkan没有包含线性代数库,我们需要自己找一个。GLM就是一个我们需要的线性代数库,它经常和OpenGL一块使用。

值得庆幸的是vulkansdk中以及自带了这个库,位于VulkanSDK\1.2.176.1\Third-Party\Include中

4.配置Visual Studio

现在,我们可以创建一个基本Visual Studio工程来验证我们安装的依赖是否可以正常工作。

首先,启动Visual Studio,新建一个空白项目。

创建完成后,我们需要新建一个cpp文件

接下来我们需要链接glm、glfw、vulkan头文件及lib静态库

打开项目的属性面板,选择C/C++ ——> 常规 ——>附件包含目录,这一步指定我们需要用到的头文件的目录

然后选择链接器——>常规——>附加包含目录,指定我们要链接的静态库的路径

然后选择 链接器——>输入——>附加库目录,输入要链接的静态库 vulkan-1.lib 和glfw3.lib

项目属性设置完毕

接下来我们可以在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" << std::endl;

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

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

	glfwDestroyWindow(window);

	glfwTerminate();

	return 0;
}

记得解决方案平台切换到x64哦

按下F5试一下吧

得到这样的界面,证明环境配置就成功了。

可以前往 Base code - Vulkan Tutorial (vulkan-tutorial.com) 继续vulkan的学习旅程了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vulkan开发环境配置 Win10+VS2019 的相关文章

  • 在Android Studio中使用vulkan

    首先要确定手机是否支持Vulkan 可以下载一个aida64 在设备中如果能找到vulkan设备 说明支持 否则不支持 严格按照官方介绍的步骤一步步执行 就能获得官方推荐的可执行的例子 有很多 可以都试一试 那怎么在自己的工程中使用vulk
  • Vulkan® A Specification Core And Extension::Vulkan文档核心部分和扩展部分对照与翻译说明

    2020 7 1 更 修改和完善某些描述 Vulkan版本 1 2 137 1 2 145 Vulkan文档分成两种 核心部分 核心部分 扩展部分 核心部分是必定要翻译的 对于扩展部分 本人并不是所有扩展都见过 所以对于扩展部分尽可能的翻译
  • Vulkan基础

    目录 一 Vulkan开发理论基础知识 接口设计理念 Host Device 基础设施 元数据和设备 基础设施 交换链 编辑交换链 SwapChain 编辑 渲染管线 Pipeline RenderPass CommandBuffer 二
  • 备忘一下,vulkan android sample 编译错误:ninja: error: libshaderc.a', needed by

    又要编译vulkan API Sample 每次找这行命令要用很久 备个忘 不编译shaderc的对应的编译错误为 Build command failed Error while executing process C Users hon
  • Vulkan开发环境配置 Win10+VS2019

    官方的环境配置教程 https vulkan tutorial com Development environment 一 下载SKD 进入官网 https vulkan lunarg com 由于是windows下进行开发 所以选择win
  • BRDF

    前言 现实世界中的表面绝大多数都是凹凸不平的 在这种情况下 可以把表面看成是大量朝向各异的微小光学平面的集合 我们肉眼可见的每个点都包含了很多个这样的微小光学平面 光线照射到这些微小表面上时 同样一部分在表面发生反射 这些朝向不同的微表面把
  • Vulkan_片元着色器特效5(泛光Bloom)

    本部分主要结合上一部分的Vulkan 片元着色器特效4 高动态范围HDR 来综合展示HDR 泛光场景 主要参照 LearnOpenGL中的Bloom章节 一 基本原理 Bloom使我们能够注意到一个明亮的物体真的有种明亮的感觉 泛光可以极大
  • 为什么我们需要多个渲染通道和子通道?

    我过去有过使用 DirectX12 的经验 但我不记得 Vulkan 中类似渲染通道的东西 所以我无法进行类比 如果我理解正确 则同一子通道内的命令缓冲区不需要同步 那么为什么要复杂化并制作多个呢 为什么我不能只使用一个命令缓冲区并将所有与
  • Vulkan 描述符绑定

    在我的 vulkan 应用程序中 当所有网格使用相同的纹理时 我曾经这样绘制网格 Updatedescriptorsets texture Command buffer record For each mesh Bind transform
  • “VkVertexInputBindingDescription”中“绑定”的目的是什么?

    https www khronos org registry vulkan specs 1 0 man html VkVertexInputBindingDescription html https www khronos org regi
  • vulkan VkPipelineLayoutCreateInfo 的多个 setLayoutCount 的目的是什么?

    我想知道为什么可以在 VkPipelineLayoutCreateInfo 中指定多个描述符集布局 因为单个描述符集布局已经包含所有绑定 描述符集布局描述单个描述符集的布局 但管道可以有multiple描述符集 这就是layout set
  • 如果“buffer”是“coherent”,那么读取字段或执行“atomicAdd(field, 0)”之间有什么区别吗?

    这是 Vulkan 语义 如果有什么不同的话 假设如下 layout coherent buffer B uint field b 假设该字段正在被同一着色器 或派生着色器 的其他调用修改atomic 功能 如果着色器调用想要从中执行原子读
  • 将 Vulkan 与 SFML 结合使用?

    我目前使用 GLFW 进行窗口创建和用户输入 GLFW 只是让我们可以说 glfwWindowHint GLFW CLIENT API GLFW NO API 告诉 GLFW 不支持 OpenGL 它甚至提供了类似的功能 glfwCreat
  • GPU 上的相干内存是什么?

    我在记忆中不止一次遇到 非连贯 和 连贯 记忆这个术语 科技论文 https renderdoc org vulkan in 30 minutes html与图形编程相关 我一直在寻找简单明了的解释 但发现大部分是 硬核 论文this ht
  • 使用fences清理命令缓冲区并同时同步交换链图像

    假设我有一个交换链 其中包括n图像和我允许k 飞行中的帧 我确保之间的正确同步vkAcquireNextImageKHR vkQueueSubmit and vkQueuePresentKHR通过一组信号量imageAvailableSem
  • xvfb(带有 Mesa 19.2)与 Vulkan 兼容吗?

    我正在尝试在无头 Ubuntu 19 10 虚拟机上运行基于 Vulkan 的图形应用程序 通过xvfb https en wikipedia org wiki Xvfb 从裸露的 Ubuntu 19 10 映像开始 使用创建lxc htt
  • Vulkan命令执行顺序

    引用Vulkan 1 0规范文档 chapter 5 Command Buffers 第4段 除非另有说明 并且没有显式同步 否则通过命令缓冲区提交到队列的各种命令可以按相对于彼此的任意顺序执行 和 或同时执行 在第2 1 1章 队列操作
  • 什么时候关闭光栅化步骤才有意义?

    在 vulkan 中 有一个创建管道所需的结构 名为VkPipelineRasterizationStateCreateInfo 在这个结构体中有一个名为rasterizerDiscardEnable 如果该成员设置为VK TRUE那么在光
  • vulkan 扩展:哪些由谁支持?

    有EXT KHR or AMD or NV扩展 也许还有其他一些 我知道NV means NvidiaAMD 不太可能支持 it nv 扩展 但是 khr 或 ext 又如何呢 他们是所有人都强制支持的吗 有一个website https
  • Vulkan 交换链格式 UNORM 与 SRGB?

    在 Vulkan 程序中 片段着色器通常向每个红 蓝 绿通道输出 0 0 到 1 0 范围内的单精度浮点颜色 然后将这些颜色写入 混合到 交换链图像中 然后呈现在屏幕上 根据交换链图像的格式 创建交换链时指定 浮点值被编码为位 当我更改交换

随机推荐

  • 使用Guava RateLimiter限流以及源码解析

    前言 在开发高并发系统时有三把利器用来保护系统 缓存 降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时 需要暂时屏蔽掉 待高峰或者问题解决后再打开 限流 限流的目的是通过对并发
  • win10 graphedit存储的路径

    如果安装郭windows SDK的话 可能的存储位置为C Program Files x86 Windows Kits 10 bin x86 C Program Files x86 Windows Kits 10 bin x64
  • 【C语言学习教程---2】C语言的数据类型

    事物的难度远远低于对事物的恐惧 上一篇文章已经介绍说明了Visual C 的安装和使用 链接如下 C语言学习教程 1 VC 6 0的安装和创建简单C语言工程文件教程 文末有程序代码免费的获取方式 本篇文章开始正式讲解和介绍C语言的知识 在学
  • 安装破解版的edraw max

    一 简介 project是一款好用的项目管理工具 二 安装过程 1 下载安装包 安装软件 安装后先不要运行 https pan baidu com share init surl gKfohSW8XEn 9cYLwnJwdQ h3um 2
  • git:git clone -b提示remote branch master not found in upstream origin

    问题 如标题 解决办法 检查下分支名是否写错了 git创建时有时候不一定有master分支 而是main分支 需要注意
  • Selenium webdriver的无头模式(headless)可能导致cookies内容缺失,以及解决措施

    无头模式 headless 是selenium的webdriver浏览器驱动的一项功能 允许浏览器不出现而仍可访问网页 并与之交互 这对于运行自动化测试或网络抓包大有用处 因为运行速度更快 占用资源更少 但是笔者发现在无头模式下运行时 浏览
  • 高性能mysql一.mysql系统结构和概念

    文章目录 1 1Mysql逻辑架构 1 1 1连接管理和安全性 1 1 2优化与执行 1 2并发控制 1 2 1读写锁 1 2 2锁粒度 1 3事务 1 3 1隔离级别 1 3 2死锁 1 3 3事务日志 1 3 4mysql中的事务 1
  • uni-app 下拉条件筛选菜单组件sl-filter app端不能正常显示

    1 使用uniapp的sl filter组件时 在浏览器中可以正常看到下拉筛选组件如下图1 2 在app中无法看到条件筛选控件 如下图2 3 找到sl filter中sl filter vue中的 created onReady 方法 将
  • MSP430F5529学习笔记(5)——按键切换灯的亮灭

    MSP430F5529学习笔记 4 按键点灯 目录 官方示例代码 内容解析 BIT0的含义 解析 按键消抖 增加的宏定义 问题 解决办法 官方示例代码 官方视频教程里面的代码如下 我做了些许的调整 但是是一样的 只需要看while 1 中的
  • 机器学习概论 聚类算法实现(实验四)

    一 实验目的 1 熟悉使用numpy模块生成二维正态分布 2 掌握kmeans聚类的代码实现 3 熟悉numpy的使用 4 熟悉matplotlib的使用 二 实验设备 计算机 CPU四核i7 6700处理器 内存8G SATA硬盘2TB硬
  • fedora下一些与网络配置相关的文件和命令

    http thethe blog 51cto com 498901 145966 1 如果您在命令行下启动网络服务 应该是 root localhost beinan etc init d network start root localh
  • latex之使用texstudio 编辑算法伪代码

    latex安装一定要记得设置环境变量 另外texstudio配置变量设置请看latex安装和texstudio latex语法没怎么学 随便找个模板跟着玩的 入门案例如下贴出来的 方便以后查找 使用 首先推荐一下网址 https priva
  • 半导体(芯片制造)材料概述

    引用 1 https zhuanlan zhihu com p 371609556 2 https zhuanlan zhihu com p 374110990 3 https www eet china com mp a91416 htm
  • Opencv时间计算

    OpenCV中的时间计算 OpenCV提供了两个函数 cv getTickCount 和cv getTickFrequency 其中 getTickCount 表示的是从某一事件后 比如开机后 系统时钟的嘀嗒数 getTickFrequen
  • element-UI

    常用组件 vue admin里封装的组件 插件等 统一注册在framework vab index js里 main js再导入framework vab 就可以全局使用framework vab里的内容了 如果想全局使用自己封装的组件 可
  • 2. Unity操作基础知识

    1 创建新项目 双击打开 unity hub管理器 点击左侧栏中的 项目 选项卡 在右上角点击 新项目 按钮 进入项目创建页面 在项目创建页面中 选择合适的模板 并设置项目名称 选择项目保存位置 取消勾选同意版本管理和政策条款 最后点击 创
  • Python语法:... for ... in ... if ...

    Python中 for in if 语句是一种简洁的构建List的方法 从for给定的List中选择出满足if条件的元素组成新的List 其中if是可以省略的 下面举几个简单的例子进行说明 for in for in 语句 实例如下 1 a
  • 【Android基础篇】AlertDialog自定义setView方法的控件响应方法

    Android使用AlertDialog弹出对话框时 如果需要自定义对话框界面 就需要用到setView来设置界面 此时 界面上一般都会有需响应或需记录结果的控件 这就需要查找控件了 下面就是一个在自定义对话框中查找控件并进行响应的实例 L
  • 大神之路-起始篇

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 涉及 企业运维 网络安全 应用开发 物联网 人工智能 大数据 学习知识 花开堪折直须折 莫待无花空折枝 作者主
  • Vulkan开发环境配置 Win10+VS2019

    官方的环境配置教程 https vulkan tutorial com Development environment 一 下载SKD 进入官网 https vulkan lunarg com 由于是windows下进行开发 所以选择win