1.Vulkan 环境配置
环境:
VS2017
Windows 10
GTX 940M
首先我们要配置库
因为我实在是太懒了,不愿意重新配一遍,所以大约讲讲流程吧。环境配 这个vulkan环境配置应该能查到,如果查不到,可以来问我,我不一定会看见。。。
Lunarg SDK:
vulkan的开发者库,实在是爽爆了,里面还带了好多实用的工具,不像OPENGL一样吃屎,出了错干瞪眼,只能一点点找。
这里是 Lunarg SDK下载网址 ,下完了后安装,他会自动给你的系统添加环境变量,你就不用手动添加环境变量了,安装完成后你还会发现里面自带第三方库 GLM 和 SDL2 ,也就是下面我们要介绍的两个库。
定位到 vulkan sdk 的安装目录下的 \Bin 文件夹
运行里面的cube.exe如果运行成功了那么说明 :
你的vulkan sdk安装成功了
vulkan 运行库也安装成功了
你的显卡驱动也支持到位了。
如果没有运行成功,大多数原因可能是你的显卡驱动需要升级了
要去核弹厂去升级你的核弹驱动
如果还不行去找Demos文件夹里的VS工程打开编译一下,如果编译成功了,说明完全没问题,没成功的自行找原因。
记住:只要链接vulkan-1.lib就好了,跟vulkan-1.lib在一起的各种VK_Layer*.lib不要链接,否则你会在vkCreateInstance函数崩溃,而且找不到原因。
GLFW:一个创建窗口的库
这个是个跨平台的窗口库,我们此教程用的是这个库,
为什么用这个库,因为之前学OPENGL的时候,官方推荐用的这个库,所以比较熟悉一些,不想再学新的了。
两种安装glfw库的方式:
第一种是下载源文件,自己cmake一下,把Debug版本的glfw3.lib修改成glfw3d.lib就能放在一起了,Debug选glfw3d.lib,Release版本选择glfw3.lib
第二种是直接下载二进制文件,他给你直接编译好了,直接拿来用好了。
glfw所需要的libPerfect ! 是不是很完美呢?
GLM:一个数学库(Lunarg SDK自带的第三方库)
里面提供了方便的数学操作,各种矩阵运算,方便。但是我不打算用,我想自己写一个,用自己的安心点,细节底层自己都了解,出了问题好解决。
SDL2:一个创建窗口的库(Lunarg SDK自带的第三方库)
和 glfw 一样用来创建窗口的,恩。不过我不打算用
我们都准备好了我们需要的库,接下来要在VS中配置。
VS菜单->项目->属性
打开属性页
vs属性页大家肯定都被VS的项目配置弄迷糊过,在这里给大家讲清楚include ,lib ,dll等等这些东西都该放在那里
包含目录 :应该填 存放我们要引入的头文件 的 路径 , 这个告诉编译器应该从哪里找头文件,一般把库的include路径添加进去就好
库目录 :应该填 存放我们要引入的lib文件 的 路径 ,这个告诉编译器应该从哪里找lib
链接lib附加依赖项 : 应该填 要链接的lib ,编译器会从我们之前填的库目录里找附加依赖项,Debug用 glfw3d.lib,Release用glfw3.lib
正当你开开心心运行自己的代码的时候,突然蹦出来了找不到 dll 给你浇了一头冷水。你以为这样就结束了?No,你还要给编译器指定编译环境的dll目录。
就在下图里添加
dll目录配置环境 :填 dll 所在的路径
填的是这个 Path=%Path%;D:\VULKAN\1.1.85.0\Source\li
其实我也不确定对不对,如果还报dll找不到的错误话,自己去找找解决方法吧。
我们总结一下vs环境配置:
一共需要配置四个地方
头文件
lib目录
lib文件
dll目录
测试代码:
可以把里面glm还有sdl的代码去掉,如果不想用的话。
#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;
}
#至于linux驱动下的环境配置,哦吼吼,显卡驱动是一个大难关。还好我用的ubuntu里面自己给安装,之前用了别的方法,没成功。
[ubuntu安装英伟达显卡驱动-百度经验](https://jingyan.baidu.com/article/d7130635c5a86113fdf47532.html)