2025从0开始的Vulkan之旅01:配置环境

发布于:2025-05-01 ⋅ 阅读:(442) ⋅ 点赞:(0)

目录

下载vk

配置vk环境


很多人学习计算机图形学时首先尝试的都是OpenGL,因为其API比较简单。但是其底层已经相对比较落后。在进一步的学习中,vulkan(下面简称vk)是一定会接触到的东西。vk是OpenGL的开发团队针对新的硬件架构开发的新的跨平台图形API,适合高性能渲染。从这篇文章开始我将开始vk的学习,并且争取以最喂饭的方式讲解vk的学习路径,从而让不熟悉OpenGL的开发者也能上手vk。

注意:不熟悉OpenGL不代表0基础,如果你完全不懂得图形学的话上手vk还是地狱难度的。因此建议先补充必要的图形学知识。这里推荐网上搜索图形学虎书或者B站搜索GAMES101.

下载vk

下载vk的方式较为简单,只需要在vk官网下载最新的SDK安装即可:

Vulkan 1.3.283.0 SDK Now Available | Vulkan | Cross platform 3D Graphics

安装完之后直接找到Demos文件夹打开Visual Studio解决方案(没有VS建议下载一个)打开运行,会弹出来一个旋转的方块,像这样:

这就说明你的vk环境是没有问题的。如果出现了报错,请检查你的显卡驱动并更新。

配置vk环境

  • 操作系统:Windows11
  • Visual Studio 2022

首先我们新建一个项目,并且新建一个.cpp文件加入该项目:

随后在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;
}

接下来我们配置Visual Studio:

打开解决方案属性,找到C/C++-附加包含目录:

这里直接把所有需要的文件放到了一个和解决方案同级的文件夹下:

你的include应该至少包含GLFW和vk的包含文件,如下所示:

其中,GLFW文件夹可以在下载的vk文件夹的glfw-3.4.bin.WIN64\glfw-3.4.bin.WIN64\include找到,其余可以在vk文件夹的Include找到。

接下来看到链接器-常规-附加库目录属性:

其中前者可以在vk文件夹的Lib找到,后者可以在vk文件夹的glfw-3.4.bin.WIN64\glfw-3.4.bin.WIN64\lib-vc2022找到。

最后看到链接器-输入-附加依赖项属性:

直接输入即可。

配置完属性后直接运行,如果没有路径错误一般都可以成功,出现一个黑框框和全白的图形窗口:

如果报错,说明前面配置属性的路径有问题,或者你的vk没有装好。另外还需要注意的是,上面的属性都需要在“所有配置“条件下更改,运行请使用x64运行。

为什么没有第一个程序?

本文为什么不直接讲如何渲染一个简单图形?原因是vk针对现代图形流水线做了很多封装。完成了环境配置距离渲染一个图形还有很长的距离。

事实上,本文很大程度上参考了Introduction - Vulkan Tutorial的官方教程。由于官网的教程是全英文的,这里提供一个翻译之后的资源。这个资源比较新(2024年的),所以一般照着做都没有什么问题:

链接:https://pan.baidu.com/s/1cQSawir32j5VLQl2ZcI5Aw 
提取码:vkvk

本文相比官方教程好在哪里?

本文相比官方教程更加亲民(面向真正小白,因为作者就是vk小白),可能讲的更加直观容易理解(免去了你问AI的时间),争取完美还原你读源码的心路历程。欢迎关注追更!


网站公告

今日签到

点亮在社区的每一天
去签到